如何通过IKJEFT01 Utility运行动态SQL? [英] How to run dymanic SQL through IKJEFT01 Utility?

查看:138
本文介绍了如何通过IKJEFT01 Utility运行动态SQL?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在执行IKJEFT01时如何在SQL查询中传递参数?示例:

How can we pass parameters in SQL query while executing IKJEFT01? Example:

//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",而是要通过变量传递值. 如何做到这一点?请帮助...!

Instead of giving value in sql query as '999' i want to pass the value through a variable. How this can be done? Plz help...!

推荐答案

在执行UNLOAD步骤之前,有一个单独的步骤将SQL的可变行写入临时文件.然后将该临时文件与SQL不变的行连接起来.

Have a separate step, prior to your UNLOAD step, that writes the variable line(s) of SQL to a temporary file. Then concatenate that temporary file with the unchanging lines of 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字段中的内容并将其写入OUTPUT01 DD.

...where PRM2FILE is a program you write to take whatever is in the parm field and write it to the OUTPUT01 DD.

为了达到您要实现的目标,我们做了很多事情.

We do this a lot to accomplish the same goal you are trying to achieve.

这篇关于如何通过IKJEFT01 Utility运行动态SQL?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆