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

Execute SQL command from within a resultset in stored procedure in DB2

我有以下存储过程:

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 包含列 ID 和 CMD,其中 CMD 包含 SQL 命令。 CMD 是 1024 VARCHAR。 在此测试中,它们是另一个 table

的 2 个插入
INSERT INTO TARGETTBL(TARGET, TARINT) VALUES ('TEST', 100);
INSERT INTO TARGETTBL(TARGET, TARINT) VALUES ('TEST2', 200);

例如。

我的问题是 "CALL" 部分。我有 DB2 v9.7,但如果在较低版本上也有解决方案 运行ning 那就太好了。 我还没有找到任何关于如何 运行 这和简单的 EXEC 或 EXECUTE 不起作用的指示。

感谢您的帮助。

流浪汉

您需要准备并执行语句,因为它们被视为 "dynamic SQL"。

PREPARE myStmt FROM SQLCMD; EXECUTE myStmt;