RESULT 子句在过程中是可选的。通过省略 RESULT 子句,可以编写返回不同结果集的过程,结果集中可以有不同数目或类型的列,具体情况取决于过程的执行方式。
如果不使用可变结果集功能,则出于性能方面的原因,应使用 RESULT 子句。
例如,如果输入变量为 Y,以下过程返回两列,否则只返回一列。
CREATE PROCEDURE Names( IN formal char(1) ) BEGIN IF formal = 'y' THEN SELECT Surname, GivenName FROM Employees ELSE SELECT GivenName FROM Employees END IF END; |
过程中可变结果集的使用受到某些限制,具体限制取决于客户端应用程序所使用的接口。
嵌入式 SQL 要获取正确形式的结果集,必须在打开用于结果集的游标之后、但在返回任何行之前对过程调用执行 DESCRIBE。
创建不带 RESULT 子句的过程并且过程返回可变结果集时,引用该过程的 SELECT 语句的 DESCRIBE 可能失败。为防止 DESCRIBE 失败,建议在 SELECT 语句的 FROM 子句中包括 WITH 子句。或者,也可在 DESCRIBE 语句中使用 WITH VARIABLE RESULT 子句。您可使用 WITH VARIABLE RESULT 子句来确定每次执行 OPEN 语句后是否应描述过程调用。
ODBC ODBC 应用程序可以使用可变结果集过程。SQL Anywhere ODBC 驱动程序会对可变结果集进行适当的描述。
Open Client 应用程序 Open Client 应用程序可以使用可变结果集过程。SQL Anywhere 会对可变结果集进行适当的描述。
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |