您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

呼叫

语法

CALL  (  ) [  ]

| CALL ( )

语法元素

指定要调用的过程。 ::= [ .]或者,指定标识符的模式名称。指定过程参数。 ::= [,...]指定过程参数。 ::= | | | | | | 传递给过程的参数是标量常量,可以作为 IN、OUT 或 INOUT 参数传递。假定标量参数为 NOT NULL。表类型的 IN 参数的参数可以是物理表或视图。为表格 OUT 参数传递的实际值必须为 ? 。指定用于 CALL 的提示。 ::= WITH HINT ( [, ...] ) ::= { | | } [ CASCADE ] ::= from public hint list [()] ::= [, ...] ::= hint argument type according to each hint specification (for example, one of STR_CONST, INT_CONST, ID, or ) ::= ROUTE_TO( [, [,...] ] ) | ROUTE_TO( [, [,...] ] ) | NO_ROUTE_TO( [, [,...] ] ) | NO_ROUTE_TO( [, [,...] ] ) | ROUTE_BY( { | } [ ,{ | } [,...] ] ) | ROUTE_BY_CARDINALITY( { | } [, { | } [,...] ] ) ::= MAX_CONCURRENCY (1) | DATA_TRANSFER_COST ({0 | 1})有关按类别的可用提示列表,请参阅 SAP HANA SQL 参考指南中的提示详细信息。 CASCADE 允许将提示传播到过程中的内部 SQL 语句。HINT 同时应用于 CALL 语句本身和所有内部 SQL。如果将 CASCADE 用于非 CALL 语句,则会显示 FEATURE NOT SUPPORTED 消息。CASCADE 仅在 CALL 语句中受支持,无法将提示传播到用户定义的函数中。当存在嵌套的 CALL 语句时,CASCADE 提示也会传播到嵌套过程中。调用 SQLScript 库成员过程。 ::= [ .]: ::= ::= ::= 调用 SQLScript 库成员过程时,不支持 WITH 选项。此外,调用 SQLScript 库成员过程时不支持 EXPLAIN PLAN 或 QUERY EXPORT。

描述

调用使用 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