【发布时间】:2018-07-16 10:00:50
【问题描述】:
我编写了一个存储过程,它使用 for 循环来执行对视图列表的查询。它为 for 循环中的每个视图生成一个动态 sql 语句,然后执行它,将输出插入到已声明的临时表中。
for 循环运行良好,运行时没有错误,但是如果我在 END FOR; 之后添加一个 select 语句;要从临时表中获取最终输出,我会收到以下错误。请问有人有什么想法吗?
Error 16/07/2018 10:43:41 0:00:00.007 DB2 Database Error: ERROR [42601] [IBM][DB2/AIX64] SQL0104N An unexpected token "select *" was found following "1; END FOR; ". Expected tokens may include: "<call>". LINE NUMBER=31. SQLSTATE=42601
SQL 代码:
BEGIN
DECLARE SQLTEXT varchar(500);
DECLARE GLOBAL TEMPORARY TABLE SESSION.AS_USAGE_RESULTS(
temp table columns
);
FOR v as cur1 cursor for
select distinct viewname,viewschema
from syscat.VIEWS
DO
SET SQLTEXT = 'Dynamic Insert into temp table here'
PREPARE s1 FROM SQLTEXT;
EXECUTE s1;
END FOR;
select *
from SESSION.AS_USAGE_RESULTS;
DROP TABLE SESSION.AS_USAGE_RESULTS;
END
【问题讨论】: