Collection Contents 上一页 下一页 PDF

ASA SQL 参考

SQL 语句

CALL 语句


说明 

此语句用于调用过程。

语法 1 

[variable = ] CALL procedure-name ( [ expression, ... ] )

语法 2 

[variable = ] CALL procedure-name ( [ parameter-name = expression, ... ] )

用法 

CALL 语句调用以前用 CREATE PROCEDURE 语句创建的过程。当过程完成后,将复制回任何 INOUT 或 OUT 参数值。

通过位置或者通过使用关键字格式,可以指定参数列表。通过位置,参数与过程的参数列表中相对应的参数匹配。通过关键字,参数与指定的参数匹配。

在 CREATE PROCEDURE 语句中可以为过程参数分配缺省值,缺少的参数被分配缺省值。如果没有设置缺省值,也没有提供参数,则会给出错误。

在过程内部,当过程返回结果集时,CALL 语句可以用在 DECLARE 语句中(请参见从过程返回结果)。

使用 RETURN 语句,过程可以返回整数值(比方说作为状态指示符)。使用等号作为赋值运算符,可以将该返回值保存在变量中:

CREATE VARIABLE returnval INT;
returnval = CALL proc_integer ( arg1 = val1, ... )

有关返回非整数值的信息,请参见 CREATE FUNCTION 语句

权限 

必须是过程的所有者,有过程的 EXECUTE 权限或者有 DBA 权限。

副作用 

无。

另请参见 
标准和兼容性 
示例 

调用 sp_customer_list 过程。该过程没有参数,并返回结果集。

CALL sp_customer_list()

下面的 Interactive SQL 示例创建一个返回客户(提供了该客户的 ID)所下的订单数的过程,创建一个保存结果的变量,调用此过程并显示结果。

CREATE PROCEDURE OrderCount (IN customer_ID INT, OUT Orders INT)
BEGIN
   SELECT COUNT("DBA".sales_order.id)
   INTO Orders
   FROM "DBA".customer
   KEY LEFT OUTER JOIN "DBA".sales_order
   WHERE "DBA".customer.id = customer_ID;
END
go
 -- Create a variable to hold the result
CREATE VARIABLE Orders INT
go
-- Call the procedure, FOR customer 101
CALL OrderCount ( 101, Orders)
go
--  Display the result
SELECT Orders FROM DUMMY
go

Collection Contents 上一页 下一页 PDF