Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 参考 » 使用 SQL » SQL 语句 » SQL 语句 (A-D)

 

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, ... )
注意

如果所调用的过程返回了 INT 并且值为 NULL,则会返回错误状态值 0。无法区分这种情况和返回实际值为 0 的情况。

权限

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

副作用

无。

另请参见
标准和兼容性
  • SQL/2003   持久存储模块特性。

示例

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

CALL ShowCustomers();

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

CREATE PROCEDURE OrderCount (IN customer_ID INT, OUT Orders INT)
BEGIN
   SELECT COUNT(SalesOrders.ID)
   INTO Orders
   FROM Customers
   KEY LEFT OUTER JOIN SalesOrders
   WHERE Customers.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