Procedural programming requires that the programmer tell the computer what to do. That is, how to get the output for the range of required inputs. The programmer must know an appropriate algorithm.
Declarative programming requires a more descriptive style. The programmer must know what relationships hold between various entities.
Pure Prolog allows a program to be read either declaratively or procedurally. This dual semantics is attractive.