过程可以将结果作为作用于该过程的参数返回到调用环境中。
在过程内,可以采用以下方式为参数和变量指派值:
SET 语句。
具有 INTO 子句的 SELECT 语句。
以下过程使用 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 语句与 INTO 子句一起使用。INTO 子句跟随在选择列表之后,位于 FROM 子句之前。它包含一组变量,用于为每一选择列表项检索值。变量的数目必须与选择列表项的数目相同。
在执行 SELECT 语句时,服务器会检索 SELECT 语句的结果并将这些结果放置在变量中。如果查询结果包含多行,则服务器返回错误。对于返回多行的查询,必须使用游标。有关从过程返回多行的信息,请参见从过程返回结果集。
如果通过查询没有选择任何一行,则会返回警告。
以下过程在过程参数中返回单行 SELECT 语句的结果。
键入以下语句:
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; |
可以使用以下语句在 Interactive SQL 中测试此过程,将会显示 ID 为 102 的客户所下订单的数目:
CREATE VARIABLE orders INT; CALL OrderCount ( 102, orders ); SELECT orders; |
customer_ID 参数被声明为 IN 参数。此参数会保存传递给过程的客户 ID。
Orders 参数被声明为 OUT 参数。用于保存返回给调用环境的订单数变量的值。
Orders 变量不需要 DECLARE 语句,因为它是在过程参数列表中声明的。
SELECT 语句返回单个行并将其放置在变量 Orders 中。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |