PL/pgSQL:执行与呼叫

PL/pgSQL: PERFORM vs CALL

在比较从另一个过程调用一个过程与在 Postgres 13 中重复代码对性能的影响时,我发现您可以使用 CALLPERFORM 调用其他过程。

我用谷歌搜索了差异,但我发现的唯一相似之处是

哪个地址 PERFORMEXECUTE 而不是 PERFORMCALL

有人知道有什么区别吗?我应该使用哪一个(从 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

相关: