PL/pgSQL:执行与呼叫
PL/pgSQL: PERFORM vs CALL
在比较从另一个过程调用一个过程与在 Postgres 13 中重复代码对性能的影响时,我发现您可以使用 CALL
或 PERFORM
调用其他过程。
我用谷歌搜索了差异,但我发现的唯一相似之处是
哪个地址 PERFORM
与 EXECUTE
而不是 PERFORM
与 CALL
。
有人知道有什么区别吗?我应该使用哪一个(从 PL/pgSQL 过程调用过程时)?
CALL
is an SQL command to execute a PROCEDURE
并在添加 SQL 过程时随 Postgres 11 添加。您不能使用 SELECT
.
调用过程
PERFORM
is a PL/pgSQL command to execute any SELECT
statement and discard the result by replacing the SELECT
keyword (incl. plain FUNCTION
调用)。它一直是 PL/pgSQL 的一部分。
您不能 CALL
函数,也不能 PERFORM
过程。
您可以在 PL/pgSQL 代码块内的任何地方使用 SELECT
(没有 INTO
)。
db<>fiddle here
相关:
在比较从另一个过程调用一个过程与在 Postgres 13 中重复代码对性能的影响时,我发现您可以使用 CALL
或 PERFORM
调用其他过程。
我用谷歌搜索了差异,但我发现的唯一相似之处是
哪个地址 PERFORM
与 EXECUTE
而不是 PERFORM
与 CALL
。
有人知道有什么区别吗?我应该使用哪一个(从 PL/pgSQL 过程调用过程时)?
CALL
is an SQL command to execute a PROCEDURE
并在添加 SQL 过程时随 Postgres 11 添加。您不能使用 SELECT
.
PERFORM
is a PL/pgSQL command to execute any SELECT
statement and discard the result by replacing the SELECT
keyword (incl. plain FUNCTION
调用)。它一直是 PL/pgSQL 的一部分。
您不能 CALL
函数,也不能 PERFORM
过程。
您可以在 PL/pgSQL 代码块内的任何地方使用 SELECT
(没有 INTO
)。
db<>fiddle here
相关: