PostgreSQL 中文参考文档
🌐 英文原版 官方 ↗

CALL

CALL — 调用一个过程

Synopsis

CALL name ( [ argument ] [, ...] )

描述

CALL 执行一个过程。

如果该过程有任何输出参数,则会返回一个结果行,其中包含这些参数的值。

参数

name

该过程的名称(可以用模式限定)。

argument

该过程调用的一个参数表达式。

参数可以包含参数名,使用的语法是 name => value。其工作方式与普通函数调用中相同;详见 Section 4.3。

对于所有缺少默认值的过程参数,包括 OUT 参数,都必须提供参数。不过,与 OUT 参数对应的参数不会被求值,因此习惯上只需为它们写上 NULL 即可。(为 OUT 参数写其他内容可能会导致与未来 PostgreSQL 版本的兼容性问题。)

注记

用户必须拥有该过程上的 EXECUTE 特权,才能被允许调用它。

要调用一个函数(而非过程),请改用 SELECT。

如果 CALL 在一个事务块中执行,则被调用的过程不能执行事务控制语句。只有当 CALL 在其自己的事务中执行时,才允许使用事务控制语句。

PL/pgSQL 对 CALL 命令中输出参数的处理方式有所不同;请参见 Section 41.6.3。

示例

CALL do_db_maintenance();

兼容性

CALL 符合 SQL 标准,但对输出参数的处理除外。标准要求用户应编写变量来接收输出参数的值。

另请参阅

CREATE PROCEDURE