我有以下存储过程:
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
答案 0 :(得分:1)
您需要准备并执行这些语句,因为它们被认为是动态SQL"。
PREPARE myStmt FROM SQLCMD;
EXECUTE myStmt;