SQLSTATE 7003 при выгрузке таблицы в JCL - PullRequest
0 голосов
/ 23 июня 2011

У меня есть JCL со следующим форматом

Библиотека Proc

//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')

Card2

  Select * from TABLE
      where condition1
       and condition2
       and condition3                      

Когда я отправляю свою работу, я всегда получаю SQLSTATE = 7003 и SQLCODE = -518. Я попытался посмотреть в Интернете и получил следующее описание

Оператор, указанный в операторе EXECUTE, является оператором выбора или не находится в подготовленном состоянии.

Может кто-нибудь сказать мне, что я скучаю? Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 31 марта 2012

Как упоминает Джеймс, в вашем операторе SELECT в CARD2 отсутствует точка с запятой. Когда вы указываете PARM ('SQL'), это означает, что ваш входной набор данных содержит один или несколько полных операторов SQL, каждый из которых заканчивается точкой с запятой.

Если вы не укажете параметр SQL, ваш входной набор данных должен содержать один или несколько однострочных операторов (без точки с запятой), которые используют следующий синтаксис:

имя таблицы или представления [ГДЕ условия] [ORDER BY столбцы]

Каждый входной оператор должен быть допустимым оператором SQL SELECT с опущенным предложением SELECT * FROM и без конечной точки с запятой.

Пожалуйста, обратитесь к этому для более подробной информации => http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/index.jsp?topic=%2Fcom.ibm.db2.doc.apsg%2Frntiaul.htm

0 голосов
/ 24 июня 2011

Я думаю, что вы просто пропустили точку с запятой (;), чтобы завершить оператор SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...