如何从CL程序运行存储过程? RUNSQLSTM需要一个源成员,但我只是想构建一个命令,以便用户可以轻松地传入变量,所以这不起作用。
答案 0 :(得分:5)
您可以调用系统程序QZDFMDB2
并将一个参数传递给SQL字符串以执行。在这种情况下,SQL字符串是对存储过程的调用:
CALL PGM(QZDFMDB2) PARM('CALL PROCEDURE (''XYZ'', ''ABC'')')
要替换您的值,请使用PARM的变量:
DCL VAR(&CALL) TYPE(*CHAR) LEN(200)
CHGVAR VAR(&CALL)
VALUE('CALL PROCEDURE (''' *CAT &PARM1 *TCAT ''', ''' *CAT &PARM2 *TCAT ''')')
CALL PGM(QZDFMDB2) PARM(&CALL)
答案 1 :(得分:3)
可能有两种选择:
在CL程序中创建一个临时源成员。使用提供的参数构造SQL语句以执行存储过程并将此源代码写入临时成员。然后使用生成的成员作为参数添加对RUNSQLSTM的调用。
第二个选项不是创建CL程序而是使用RPG / COBOL。通过使用嵌入式SQL,可以使用参数执行存储过程。它们的值应该从命令传递给程序。
答案 2 :(得分:2)
有一段时间,有人写过我曾经使用过的命令。我再也找不到这个参考了,但我还有两个选择:
它们都包含使命令工作所需的源。
答案 3 :(得分:0)
QCMDEXC
可能是您正在寻找的命令。