Toutes les expressions utilisées dans les instructions PL/pgSQL sont traitées par l'exécuteur SQL classique du serveur. En effet, une requ�te comme
SELECT expression
est traité par le moteur SQL principal. Bien qu'utilisant la commande SELECT, tout nom de variable PL/pgSQL est remplacé par des param�tres (ceci est expliqué en détail dans la Section 38.10.1, � Substitution de variables �). Cela permet au plan de requ�te du SELECT d'�tre préparé une seule fois, puis d'�tre réutilisé pour les évaluations suivantes avec différentes valeurs des variables. Du coup, ce qui arrive réellement � la premi�re utilisation d'une expression est simplement une commande PREPARE. Par exemple, si nous déclarons deux variables de type integer, x et y, et que nous écrivons :
IF x < y THEN ...
ce qui se passe en arri�re plan est ceci :
PREPARE nom_instruction(integer, integer) AS SELECT $1 < $2;
puis cette instruction préparée est exécutée (via EXECUTE) pour chaque exécution de l'instruction IF, avec les valeurs actuelles des variables PL/pgSQL fournies en tant que valeurs des param�tres. Le plan de requ�te préparé de cette fa�on est sauvegardé pour toute la durée de la connexion � la base, comme le décrit la Section 38.10.2, � Mise en cache du plan �. Généralement, ces détails ne sont pas importants pour un utilisateur de PL/pgSQL, mais ils sont utiles � conna�tre pour diagnostiquer un probl�me.