结果集允许过程将多行结果返回到调用环境中。
以下过程会返回已下订单的客户及其所下订单总值的列表。此过程不会列出未下订单的客户。
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 中编辑结果集。
如果存储过程或用户定义的函数返回一个结果集,则不能同时设置输出参数或返回一个返回值。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |