在 DB2 的过程中将字符串写入 table
Writing string into table within procedure in DB2
我有以下代码片段:
SET retcode = SQLCODE;
IF(retcode='0')THEN
SET SQLCMDINS = 'INSERT INTO RESULTTBL(SQLC, RET) VALUES ( '' '||SQLCMD||' '' , '||retcode||' )';
PREPARE myStmt2 FROM SQLCMDINS;
EXECUTE myStmt2;
ELSE
SET SQLCMDINS = 'INSERT INTO RESULTTBL(SQLC, RET) VALUES ("'|| SQLCMD ||'", '|| retcode ||')';
PREPARE myStmt2 FROM SQLCMDINS;
EXECUTE myStmt2;
END IF;
问题是 SQLCMD 没有写入 table。 retcode 工作正常,但我对字符串一无所获。 SQLCMD 是在该循环期间正在处理的 sql 命令。
关于如何使这项工作有任何想法吗?
提前致谢。
流浪汉
您似乎在 ELSE
分支中使用了一些双引号而不是单引号。
但是,既然您要使用准备好的语句,为什么不直接使用变量,而不是尝试构建 SQL 语句?
-- You can perform these 2 statements early in your procedure, no
-- need to put this right at the time you're going to execute the
-- INSERT statement
SET SQLCMDINS = 'INSERT INTO RESULTTBL(SQLC, RET) VALUES (?, ?)';
PREPARE myStmt FROM SQLCMDINS;
<...other SP code...>
SET SQLC = 'SELECT COUNT(*) FROM SYSCAT.TABLES';
<...other SP code...>
SET retcode = SQLCODE;
EXECUTE myStmt USING SQLC, SQLCODE;
我有以下代码片段:
SET retcode = SQLCODE;
IF(retcode='0')THEN
SET SQLCMDINS = 'INSERT INTO RESULTTBL(SQLC, RET) VALUES ( '' '||SQLCMD||' '' , '||retcode||' )';
PREPARE myStmt2 FROM SQLCMDINS;
EXECUTE myStmt2;
ELSE
SET SQLCMDINS = 'INSERT INTO RESULTTBL(SQLC, RET) VALUES ("'|| SQLCMD ||'", '|| retcode ||')';
PREPARE myStmt2 FROM SQLCMDINS;
EXECUTE myStmt2;
END IF;
问题是 SQLCMD 没有写入 table。 retcode 工作正常,但我对字符串一无所获。 SQLCMD 是在该循环期间正在处理的 sql 命令。
关于如何使这项工作有任何想法吗?
提前致谢。
流浪汉
您似乎在 ELSE
分支中使用了一些双引号而不是单引号。
但是,既然您要使用准备好的语句,为什么不直接使用变量,而不是尝试构建 SQL 语句?
-- You can perform these 2 statements early in your procedure, no
-- need to put this right at the time you're going to execute the
-- INSERT statement
SET SQLCMDINS = 'INSERT INTO RESULTTBL(SQLC, RET) VALUES (?, ?)';
PREPARE myStmt FROM SQLCMDINS;
<...other SP code...>
SET SQLC = 'SELECT COUNT(*) FROM SYSCAT.TABLES';
<...other SP code...>
SET retcode = SQLCODE;
EXECUTE myStmt USING SQLC, SQLCODE;