45.4. Выражения
Все выражения, используемые в операторах PL/pgSQL, обрабатываются основным исполнителем SQL-сервера. Например, для вычисления такого выражения:
IF выражение
THEN ...
PL/pgSQL отправит следующий запрос исполнителю SQL:
SELECT выражение
При формировании команды SELECT
все вхождения имён переменных PL/pgSQL заменяются параметрами, как подробно описано в Подразделе 45.11.1. Это позволяет один раз подготовить план выполнения команды SELECT
и повторно использовать его в последующих вычислениях с различными значениями переменных. Таким образом, при первом использовании выражения, по сути происходит выполнение команды PREPARE
. Например, если мы объявили две целочисленные переменные x
и y
, и написали:
IF x < y THEN ...
то, что реально происходит за сценой, эквивалентно:
PREPARE имя_оператора
(integer, integer) AS SELECT $1 < $2;
и затем, эта подготовленная команда исполняется (EXECUTE
) для каждого оператора IF
с текущими значениями переменных PL/pgSQL, переданных как значения параметров. Обычно эти детали не важны для пользователей PL/pgSQL, но их полезно знать при диагностировании проблем. Более подробно об этом рассказывается в Подразделе 45.11.2.