2012-03-07 35 views
1

IKJEFT01の実行中にSQLクエリでパラメータを渡すにはどうすればよいですか?例:IKJEFT01ユーティリティからdymanic 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' 
/* 

「999」というSQLクエリで値を与えるのではなく、値を変数に渡したいと思います。 これはどのように行うことができますか? Plzヘルプ...!

+0

JCL変数またはTWS/OPCA変数? – Deuian

答えて

4

UNLOADステップの前に、SQLの可変ラインを一時ファイルに書き込む別の手順を実行します。その一時ファイルを変更しないSQL行と連結します。

PRM2FILEあなたはPARMフィールドにあるものは何でも取るとOUTPUT01 DDにそれを書くために書くプログラムであるフリーハンド...

//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 
//* 

...。

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

関連する問題