0

我有一个具有以下格式的 JCL

过程库

//JS020    EXEC PGM=IKJEFT01,      
//             DYNAMNBR=20                        
//*           
//EXTRACT  DD  DSN=PATH.EXTRACT,          
//  DISP=(NEW,CATLG,DELETE),          
//  UNIT=SYSDA,        
//  SPACE=(TRK,(1,10),RELEASE)                                             
//SYSTSPRT DD  SYSOUT=*                           
//SYSPRINT DD  SYSOUT=*                           
//SYSUDUMP DD  SYSOUT=*                           
//SYSPUNCH DD  SYSOUT=*                           
//*                                               
//SYSTSIN  DD  DSN=PATH.CONTROL_CARD_LIB(CARD1), DISP=SHR  
//SYSREC00 DD  DSN=TABLEA.UNLOAD.FILE,            
//             DISP=(NEW,CATLG,DELETE),           
//             UNIT=SYSDA,LRECL=80                
//SYSIN    DD  DSN=PATH.CONTROL_CARD_LIB(CARD2), DISP=SHR

----->>

PATH.CONTROL_CARD_LIB CARD1

  DSN SYSTEM(XXXX)                                
  RUN PROGRAM(DSNTIAUL) PLAN(DSNTIAUL) PARM('SQL')

卡2

  Select * from TABLE
      where condition1
       and condition2
       and condition3                      

当我提交作业时,我总是得到 SQLSTATE = 7003 和 SQLCODE = -518。我尝试在网上查找并得到以下描述

EXECUTE 语句中标识的语句是选择语句,或者未处于准备状态。

有人可以告诉我我想念什么吗?非常感谢。

4

2 回答 2

0

我认为这可能只是你缺少一个分号 ( ;) 来终止你的 sql 语句。

于 2011-06-24T08:41:25.547 回答
0

正如詹姆斯所提到的,您在 CARD2 中的 SELECT 语句缺少分号。当您指定 PARM('SQL') 时,它表示您的输入数据集包含一个或多个完整的 SQL 语句,每个语句以分号结尾。

如果不指定 SQL 参数,则输入数据集必须包含一个或多个使用以下语法的单行语句(不带分号):

表或视图名称 [WHERE 条件] [ORDER BY 列]

每个输入语句必须是有效的 SQL SELECT 语句,其中省略了子句 SELECT * FROM 并且没有结束分号。

有关更多详细信息,请参阅此内容 => http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/index.jsp?topic=%2Fcom.ibm.db2.doc.apsg%2Frntiaul.htm

于 2012-03-31T03:52:06.700 回答