# 43.4.表情

PL/pgSQL语句中使用的所有表达式都使用服务器的主SQL执行器进行处理。例如,当您编写PL/pgSQL语句时

IF expression THEN ...

PL/pgSQL将通过提供如下查询来计算表达式

SELECT expression

到主SQL引擎。在形成选择命令时,任何出现的PL/pgSQL变量名都将替换为查询参数,如中详细讨论的第43.11.1节。这样就可以为选择只需准备一次,然后使用不同的变量值重新用于后续评估。因此,第一次使用表达式时真正发生的事情本质上是准备命令例如,如果我们声明了两个整数变量十、y,我们写

IF x < y THEN ...

幕后发生的事情相当于

PREPARE statement_name(integer, integer) AS SELECT $1 < $2;

然后这份准备好的声明处决d每次执行如果语句,并将PL/pgSQL变量的当前值作为参数值提供。通常情况下,这些细节对PL/pgSQL用户并不重要,但在尝试诊断问题时,了解它们很有用。更多信息见第43.11.2节.

自从*表示*已转换为选择命令,它可以包含与普通命令相同的子句选择除了不能包含顶级协会, 横断除了条款因此,例如,可以使用

IF count(*) > 0 FROM my_table THEN ...

自从*表示*之间如果然后被解析为从my_表中选择count(*)>0这个选择必须生成一列,但不能超过一行。(如果不生成行,则结果为空。)