在 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;