3

CL プログラムからストアード・プロシージャーを実行するにはどうすればよいですか? RUNSQLSTM にはソース メンバーが必要ですが、ユーザーが変数を簡単に渡せるようにコマンドを作成したいだけなので、これは機能しません。

4

4 に答える 4

5

システム プログラムQZDFMDB2を呼び出して、実行する SQL 文字列を含む 1 つのパラメーターを渡すことができます。この場合、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 への呼び出しを追加します。

2 番目のオプションは、CL プログラムを作成せずに RPG/COBOL を使用することです。埋め込み SQL を使用すると、ストアド プロシージャをパラメータで実行できます。それらの値は、コマンドからプログラムに渡される必要があります。

于 2008-10-29T16:22:50.807 に答える
2

ある時、誰かが書いた、私が使ったコマンドがありました。その参照はもう見つかりませんが、他に 2 つのオプションがあります。

  1. この記事では REXXを使用しています
  2. この記事はRPGを使用しています

どちらにも、コマンドを機能させるために必要なソースが含まれています。

于 2008-10-29T18:39:15.477 に答える
0

QCMDEXCあなたが探しているコマンドかもしれません。

于 2012-02-03T05:56:30.233 に答える