Awe*_*ler 9 postgresql procedure function plpgsql
在研究从另一个过程调用一个过程与在 Postgres 13 中重复代码对性能的影响时,我发现您可以使用 或 来调用其他CALL过程PERFORM。
我用谷歌搜索差异,但我发现的唯一相似的事情是
哪些地址PERFORMvs.哪些地址EXECUTE不PERFORMvs. CALL.
有谁知道有什么区别?我应该使用哪一个(当从 PL/pgSQL 过程调用过程时)?
Erw*_*ter 14
CALL是一个用于执行 a 的SQL 命令PROCEDURE,是在添加 SQL 过程时随 Postgres 11 添加的。例子:
CALL my_procedure('arg1');
Run Code Online (Sandbox Code Playgroud)
SELECT my_function('arg1');
Run Code Online (Sandbox Code Playgroud)
PERFORM是一个PL/pgSQL命令,用于替换SELECT关键字(在其他普通 SQLSELECT命令中)并丢弃任何结果。例子:
...
BEGIN
PERFORM my_function('arg1');
END
...
Run Code Online (Sandbox Code Playgroud)
EXECUTE是执行(动态生成的)SQL 字符串的PL/pgSQL 命令。允许任何完整的 SQL 命令,而不仅仅是SELECT. 例子:
...
BEGIN
EXECUTE my_string_variable
USING arg1;
END
...
Run Code Online (Sandbox Code Playgroud)
SQL 字符串可以包含CALL或SELECT或任何其他 SQL 命令。但引用该USING子句的参数符号只允许作为 DML 命令中的数据元素SELECT、INSERT、UPDATE、DELETE、 and MERGE(这些符号不能用来代替表名等)。
INTO除非添加子句,否则结果将被自动丢弃。
你不能是CALL一个函数。
你不能SELECT或PERFORM一个程序。
您不能PERFORM使用EXECUTE、 或EXECUTEa PERFORM,它们都不是 SQL 命令。
db<>在这里摆弄
有关的:
| 归档时间: |
|
| 查看次数: |
7089 次 |
| 最近记录: |