3

如何从 CL 程序运行存储过程?RUNSQLSTM 需要一个源成员,但我只想构建一个命令,以便用户可以轻松地传入变量,所以这不起作用。

4

4 回答 4

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)
于 2008-10-30T22:01:05.460 回答
3

可能有2个选项:

在 CL 程序中创建一个临时源成员。使用提供的参数构造 SQL 语句以执行存储过程并将此源代码写入临时成员。然后使用生成的成员作为参数添加对 RUNSQLSTM 的调用。

第二种选择是不创建 CL 程序,而是使用 RPG/COBOL。通过使用嵌入式 SQL,可以使用参数执行存储过程。它们的值应该从命令传递给程序。

于 2008-10-29T16:22:50.807 回答
2

有一次,有人写了一个我用过的命令。我再也找不到那个参考了,但我还有另外两个选择:

  1. 本文使用 REXX
  2. 本文使用RPG

它们都包含使命令正常工作所需的源代码。

于 2008-10-29T18:39:15.477 回答
0

QCMDEXC可能是您正在寻找的命令。

于 2012-02-03T05:56:30.233 回答