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 的用法 » 存储过程和触发器 » 使用过程、触发器和批处理 » 从过程返回结果

 

作为过程参数返回结果

过程可以将结果作为作用于该过程的参数返回到调用环境中。

在过程内,可以采用以下方式为参数和变量指派值:

  • SET 语句。

  • 具有 INTO 子句的 SELECT 语句。

使用 SET 语句

以下过程使用 SET 语句将值返回到指派的 OUT 参数中:

CREATE PROCEDURE greater( 
   IN a INT,
   IN b INT,
   OUT c INT )
BEGIN
   IF a > b THEN
      SET c = a;
   ELSE
      SET c = b;
   END IF ;
END;
使用单行 SELECT 语句

单行查询会从数据库中最多检索一行数据。此类型的查询将 SELECT 语句与 INTO 子句一起使用。INTO 子句跟随在选择列表之后,位于 FROM 子句之前。它包含一组变量,用于为每一选择列表项检索值。变量的数目必须与选择列表项的数目相同。

在执行 SELECT 语句时,服务器会检索 SELECT 语句的结果并将这些结果放置在变量中。如果查询结果包含多行,则服务器返回错误。对于返回多行的查询,必须使用游标。有关从过程返回多行的信息,请参见从过程返回结果集

如果通过查询没有选择任何一行,则会返回警告。

以下过程在过程参数中返回单行 SELECT 语句的结果。

♦  返回给定客户下的订单的数目:

可以使用以下语句在 Interactive SQL 中测试此过程,将会显示 ID 为 102 的客户所下订单的数目:

CREATE VARIABLE orders INT;
CALL OrderCount ( 102, orders );
SELECT orders;
注意
  • customer_ID 参数被声明为 IN 参数。此参数会保存传递给过程的客户 ID。

  • Orders 参数被声明为 OUT 参数。用于保存返回给调用环境的订单数变量的值。

  • Orders 变量不需要 DECLARE 语句,因为它是在过程参数列表中声明的。

  • SELECT 语句返回单个行并将其放置在变量 Orders 中。