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

Posted

技术标签:

【中文标题】从 DB2 存储过程的结果集中执行 SQL 命令【英文标题】:Execute SQL command from within a resultset in stored procedure in DB2 【发布时间】:2016-02-18 10:17:51 【问题描述】:

我有以下存储过程:

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。 在这个测试中,它们是另一个表的 2 个插入

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

例如。

我的问题是“呼叫”部分。我有 DB2 v9.7,但如果也有在较低版本上运行的解决方案,那就太好了。 我还没有找到任何关于如何运行它的指针,并且一个简单的 EXEC 或 EXECUTE 不起作用。

感谢您的帮助。

流浪汉

【问题讨论】:

【参考方案1】:

您需要准备和执行这些语句,因为它们被视为“动态 SQL”。

PREPARE myStmt FROM SQLCMD; EXECUTE myStmt;

【讨论】:

以上是关于从 DB2 存储过程的结果集中执行 SQL 命令的主要内容,如果未能解决你的问题,请参考以下文章

db2存储过程动态sql被截断

db2 你可以在同一个存储过程中更改游标结果集吗?

db2如何创建存储过程

从存储过程结果集中在表上插入/更新数据

DB2 存储过程中执行动态SQL

从SQL Server 2005存储过程到FTP的最佳做法是什么?