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

 

从过程返回结果集

结果集允许过程将多行结果返回到调用环境中。

以下过程会返回已下订单的客户及其所下订单总值的列表。此过程不会列出未下订单的客户。

CREATE PROCEDURE ListCustomerValue()
RESULT ("Company" CHAR(36), "Value" INT)
BEGIN
   SELECT CompanyName,
      CAST( sum(  SalesOrderItems.Quantity *
                  Products.UnitPrice)
                  AS INTEGER ) AS value
   FROM Customers
      INNER JOIN SalesOrders
      INNER JOIN SalesOrderItems
      INNER JOIN Products
   GROUP BY CompanyName
   ORDER BY value DESC;
END;
  • 键入以下语句:

    CALL ListCustomerValue ( );
Company Value
The Hat Company 5016
The Igloo 3564
The Ultimate 3348
North Land Trading 3144
Molly's 2808
... ...
注意
  • RESULT 列表中变量的数目必须与 SELECT 列表项的数目相匹配。如果数据类型不匹配,会尽可能执行自动的数据类型转换。

  • RESULT 子句是 CREATE PROCEDURE 语句的一部分,并且不具有命令分隔符。

  • SELECT 列表项的名称不必与 RESULT 列表中的那些名称相匹配。

  • 在测试此过程时,缺省情况下 Interactive SQL 只显示第一个结果集。可以通过在 [选项] 窗口的 [结果] 选项卡上设置 [显示多个结果集] 选项,将 Interactive SQL 配置为可显示多个结果集。

  • 除非过程结果集是从视图生成的,否则可以对它们进行修改。调用该过程的用户要求对基表具有适当的权限,以修改过程结果。这与通常的过程执行权限(要求过程所有者必须对该表具有权限)不同。请参见在 Interactive SQL 中编辑结果集

  • 如果存储过程或用户定义的函数返回一个结果集,则不能同时设置输出参数或返回一个返回值。