2

IKJEFT01の実行中にSQLクエリでパラメータを渡すにはどうすればよいですか?例:

//UNLOAD    EXEC PGM=IKJEFT01
//SYSTSPRT  DD SYSOUT=*
//SYSTSIN   DD *  DSN SYSTEM(DB2X) RETRY(120)
RUN PROGRAM(DSNTIAUL)
PLAN(DSNTIAUL) -
PARM('SQL')
END
//SYSPRINT  DD SYSOUT=*
//SYSUDUMP  DD SYSOUT=D
//SYSREC00  DD DSN=FCSTN.AK.XXXXXX,
//          DISP=(NEW,CATLG,DELETE),
//SYSPUNCH  DD SYSOUT=*                                           
//SYSIN     DD *
SELECT * FROM ABC.DEF WHERE XYZ='999'   
/*

SQLクエリで「999」として値を指定する代わりに、変数を介して値を渡したいと思います。これはどのように行うことができますか?Plzヘルプ...!

4

1 に答える 1

6

UNLOADステップの前に、SQLの可変行を一時ファイルに書き込む別のステップがあります。次に、その一時ファイルをSQLの変更されていない行と連結します。

フリーハンド...

//SETVAR   EXEC PGM=PRM2FILE,PARM='WHERE XYZ=''&VAL'''
//SYSPRINT DD  SYSOUT=*
//OUTPUT01 DD  DISP=(NEW,PASS,DELETE),
//             LRECL=80,
//             AVGREC=U,
//             RECFM=FB,
//             SPACE=(80,(1,1),RLSE)
//*
//UNLOAD    EXEC PGM=IKJEFT01
//SYSTSPRT  DD SYSOUT=*
//SYSTSIN   DD *  DSN SYSTEM(DB2X) RETRY(120)
RUN PROGRAM(DSNTIAUL)
PLAN(DSNTIAUL) -
PARM('SQL')
END
//SYSPRINT  DD SYSOUT=*
//SYSUDUMP  DD SYSOUT=D
//SYSREC00  DD DSN=FCSTN.AK.XXXXXX,
//          DISP=(NEW,CATLG,DELETE),
//SYSPUNCH  DD SYSOUT=*                                           
//SYSIN     DD *
SELECT * FROM ABC.DEF
//          DD  DISP=(OLD,PASS),DSN=*.SETVAR.OUTPUT01
//*

...ここで、PRM2FILEは、parmフィールドにあるものをすべて取得し、それをOUTPUT01DDに書き込むために作成するプログラムです。

私たちはあなたが達成しようとしているのと同じ目標を達成するためにこれをたくさん行います。

于 2012-03-07T12:54:50.080 に答える