2012-03-07 2 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 
//* 

....

달성하려는 목표와 동일한 목표를 달성하기 위해 많은 노력을 기울이고 있습니다.