此语句用于调用过程。
[variable = ] CALL procedure-name ( [ expression, ... ] )
[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 权限。
无。
SQL/92 持久存储模块特性。
SQL/99 持久存储模块特性。
Sybase 不受 Adaptive Server Enterprise 支持。有关支持的一种替代方法,请参见 EXECUTE 语句 [T-SQL]。
调用 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
goSQL Anywhere Studio 9.0.2
版权所有 © 1989–2005 Sybase, Inc. 部分版权所有 © 2001–2005 iAnywhere Solutions, Inc. 保留所有权利。