CALL ( ) [ ]
| CALL ( )
IN、OUT 或 INOUT 参数传递。假定标量参数为 NOT NULL。表类型的 IN 参数的参数可以是物理表或视图。为表格 OUT 参数传递的实际值必须为 ? 。from public hint list [(to each hint specification (for example, one of STR_CONST, INT_CONST, ID, or NOT SUPPORTED 消息。CASCADE 仅在 CALL 语句中受支持,无法将提示传播到用户定义的函数中。当存在嵌套的 CALL 语句时,CASCADE 提示也会传播到嵌套过程中。
调用使用 CREATE PROCEDURE 定义的过程。
CALL 在概念上返回结果集的列表,每个表格结果都有一个条目。迭代器可用于对这些结果集进行迭代。对于每个结果集,可以使用与查询结果相同的方式遍历结果表。未指派给过程主体中的任何表变量的 SQL 语句将作为结果集添加到结果集列表的末尾。结果结构的类型将在编译期间确定,但在过程的签名中不可见。
CALL 由客户端执行时,语法行为与 SQL 标准语义一致,例如,Java 客户端可以使用 JDBC CallableStatement 调用过程。标量输出变量是可以直接从可调用语句中检索的标量值。
备注不带引号的标识符隐式视为大写。引用标识符将采用大写形式,并允许使用通常不允许在 SQL 标识符中使用的空格。
在这些示例中,请考虑以下过程签名:
CREATE PROCEDURE proc(
IN value integer,IN currency nvarchar(10),OUT outTable typeTable,
OUT valid integer)
AS
BEGIN
…
END;
调用 proc 过程:
CALL proc(1000, 'EUR', ?, ?);还可以使用标量用户定义的函数作为过程调用的参数:
CALL proc(udf(),’EUR’,?,?);
CALL proc(udf()* udf()-55,’EUR’, ?, ?);
在此示例中,udf() 是一个标量用户定义的函数。有关标量用户定义函数的详细信息,请参阅 CREATE FUNCTION