On this page
42.4. Expressions
PL/pgSQL 语句中使用的所有表达式都是使用服务器的主 SQL 执行程序处理的。例如,当您编写如下的 PL/pgSQL 语句时
IF expression THEN ...
PL/pgSQL 将通过提供查询来评估表达式
SELECT expression
到主要的 SQL 引擎。在形成SELECT
命令时,任何出现的 PL/pgSQL 变量名都将替换为参数,如Section 42.10.1中详细讨论的。这样就可以只准备一次针对SELECT
的查询计划,然后将其重新用于具有不同变量值的后续评估。因此,第一次使用表达式时 true 发生的实际上是一个PREPARE
命令。例如,如果我们声明了两个整数变量x
和y
,我们将编写
IF x < y THEN ...
幕后发生的事情等同于
PREPARE statement_name(integer, integer) AS SELECT $1 < $2;
然后,对于IF
语句的每次执行,此准备好的语句为EXECUTE
d,并提供 PL/pgSQL 变量的当前值作为参数值。通常,这些详细信息对于 PL/pgSQL 用户并不重要,但是在尝试诊断问题时了解它们非常有用。更多信息出现在Section 42.10.2中。