【发布时间】:2016-01-20 10:24:33
【问题描述】:
我目前正在 IBM i 5 V7R1 上编写 SQL 过程。 如果我想在我的 for 循环之后返回一个结果集,我将无法创建该过程。 这是代码:
create or replace procedure test1()
DYNAMIC RESULT SETS 1
LANGUAGE SQL
SPECIFIC EDVVAEH1.test1
NOT DETERMINISTIC
MODIFIES SQL DATA
CALLED ON NULL INPUT
SET OPTION ALWBLK = *ALLREAD ,
ALWCPYDTA = *OPTIMIZE ,
COMMIT = *NONE ,
DECRESULT = (31, 31, 00) ,
DFTRDBCOL = *NONE ,
DYNDFTCOL = *NO ,
DYNUSRPRF = *USER ,
SRTSEQ = *HEX
proc: BEGIN
DECLARE x VARCHAR(255);
DECLARE return_cur CURSOR with return FOR
select * from sysibm.sysdummy1;
loop1: for record as C1 cursor for
SELECT TABLE_NAME
from qsys2.systables
DO
SET x = record.table_name;
END FOR loop1;
open return_cur;
END proc
正如选项定义的那样,我想在两个循环之后返回一个结果集,但它不允许我创建这个过程。
错误是 -104 标记:“语句结束”无效,但一切都在那里 :(
【问题讨论】:
-
我建议查看 SQL 语法...DB2 for i SQL Reference 7.1
-
我花了几个小时阅读这篇文章......
-
你是如何运行语句的?当我运行您在 iNav“运行 SQL 脚本”中提供的内容时,我得到的唯一错误是关于“X”的缺少声明。如果我为 X 添加一个 DECLARE,它会创建得很好。
-
我会在星期一试一试,但我们工作中都有我的问题。
-
我用 X 的声明试过了...同样的问题。供应商代码 -104 ... 声明结尾无效。
标签: sql stored-procedures db2 ibm-midrange