Когда я запускаю скрипт REXX:

/* REXX */                                               
CALL CONNIN /* CONNECTION */                             
ADDRESS DSNREXX "EXECSQL DECLARE C1 CURSOR FOR S1"       
IF SQLCODE \= 0 THEN DO                                  
   ERRMSG = "EXECSQL DECLARE"                             
   CALL SQLCA                                             
END                                                      
TTABLE = "ibmuser.dept"                        
SQLSMT = "SELECT * FROM :TTABLE"                         
ADDRESS DSNREXX "EXECSQL PREPARE S1 FROM :SQLSMT"        
IF SQLCODE \= 0 THEN DO                                  
   ERRMSG = "EXECSQL PREPARE"                             
   CALL SQLCA                                             
END                                                      
CALL CLOSING /*CLOSING ALL*/                             
EXIT 0                                                   
/*ROUTINES CALLED*/                                      
/*INITIAL CONNECTION*/                                   
CONNIN:
SSID = "DBCG"                                            
ADDRESS TSO "SUBCOM DSNREXX"                             
IF RC THEN S_RC = RXSUBCOM("ADD","DSNREXX","DSNREXX")    
ADDRESS DSNREXX "CONNECT" SSID                           
IF SQLCODE \= 0 THEN DO                                  
   ERRMSG = "CONNECT TO" SSID "FAILED."                   
   CALL SQLCA                                             
END                                                      
RETURN                                                   
/* ERROR HANDLING ROUTINE */                             
SQLCA:                                                   
SAY " ERROR MSG=  >"ERRMSG"<"                            
SAY " SQLCODE  =  >"SQLCODE"<"                           
SAY " SQLSTATE =  >"SQLSTATE"<"                          
SAY " SQLERRMC =  >"SQLERRMC"<"                          
SAY " SQLERRP  =  >"SQLERRP"<"                           
SAY " SQLERRD.1=  >"SQLERRD.1"<"                         
SAY " SQLERRD.2=  >"SQLERRD.2"<"                         
SAY " SQLERRD.3=  >"SQLERRD.3"<"
SAY " SQLERRD.4=  >"SQLERRD.4"<"                 
SAY " SQLERRD.5=  >"SQLERRD.5"<"                 
SAY " SQLERRD.6=  >"SQLERRD.6"<"                 
EXIT 8                                           
RETURN                                           
/* CLOSING */                                    
CLOSING:
ADDRESS DSNREXX "DISCONNECT"                     
S_RC = RXSUBCOM("DELETE","DSNREXX","DSNREXX") 
RETURN

После запуска я получаю сообщения об ошибках:

ERROR MSG=  >EXECSQL PREPARE<                             
SQLCODE  =  >-805<                                        
SQLSTATE =  >51002<                                       
SQLERRMC =  >DALLASC..DSNREXX.1AB2405808DB7F29:DSNREXX:03<
SQLERRP  =  >DSNXEPM <                                    
SQLERRD.1=  >-251<                                        
SQLERRD.2=  >0<                                           
SQLERRD.3=  >0<                                           
SQLERRD.4=  >-1<                                          
SQLERRD.5=  >0<                                           
SQLERRD.6=  >0<                                           

Ошибка происходит от: ADDRESS DSNREXX «EXECSQL PREPARE S1 FROM: SQLSMT» С помощью SPUFI (утилита db2) я могу вывести таблицу IBMUSER.DEPT с помощью select * из ibmuser.dept; Как я могу решить эту проблему? Спасибо

0
Higinio Fuentes 12 Апр 2019 в 07:29

2 ответа

Лучший ответ

Спасибо @ piet.t и @ bruce-martin за предложения. Проблема заключалась в том, что DSNREXX не был включен для публичного использования.

0
Higinio Fuentes 18 Апр 2019 в 01:20

Я бы попробовал

TTABLE = "ibmuser.dept"                        
SQLSMT = "SELECT * FROM" TTABLE  

Ошибка -805 является

-805   DBRM OR PACKAGE NAME location-name.collection-id.dbrm-name.consistency-token NOT FOUND IN PLAN plan-name. REASON 

Полное сообщение скажет вам, что DB2 не может найти. Если вы не можете найти его, попробуйте посмотреть в выходных данных вашей работы TSO

3
Bruce Martin 12 Апр 2019 в 04:49