从DB2中的存储过程的结果集中执行SQL命令

时间:2016-02-18 10:17:52

标签: sql stored-procedures db2 call resultset

我有以下存储过程:

CREATE PROCEDURE SQLTEST()
LANGUAGE SQL
BEGIN ATOMIC
DECLARE SQLCMD VARCHAR(1024);

FOR v AS cur1 CURSOR FOR SELECT ID, CMD from COMMANDTBL
DO 
  SET SQLCMD= v.CMD;
  "CALL" SQLCMD;
END FOR;
END?

COMMANDTBL具有CMD具有SQL命令的列ID和CMD。 CMD是1024 VARCHAR。 在这个测试中,他们是另一个表的2个插入

INSERT INTO TARGETTBL(TARGET, TARINT) VALUES ('TEST', 100);
INSERT INTO TARGETTBL(TARGET, TARINT) VALUES ('TEST2', 200);

例如。

我的问题是" CALL"部分。我有DB2 v9.7,但如果在较低版本上运行解决方案,那将会很棒。 我没有找到关于如何运行它的任何指针,并且简单的EXEC或EXECUTE不起作用。

感谢您的帮助。

TheVagabond

1 个答案:

答案 0 :(得分:1)

您需要准备并执行这些语句,因为它们被认为是动态SQL"。

PREPARE myStmt FROM SQLCMD; EXECUTE myStmt;