Stored procedures 存储过程-如何在rexx中获取作为输出的数组

Stored procedures 存储过程-如何在rexx中获取作为输出的数组,stored-procedures,db2,zos,rexx,db2-zos,Stored Procedures,Db2,Zos,Rexx,Db2 Zos,我正在测试DB2forz/OS的一些功能,现在我在尝试通过REXX调用存储过程时遇到了问题 下面是创建我需要在存储过程中返回的数据类型的代码 CREATE TYPE *******.ARRAY_TESTE AS VARCHAR(186) ARRAY[200]; 这是我用来创建存储过程的DDL CREATE PROCEDURE *******.TESTE_EMP2 (OUT EDLEVELARR MYVARRTYPE, OUT L

我正在测试DB2forz/OS的一些功能,现在我在尝试通过REXX调用存储过程时遇到了问题

下面是创建我需要在存储过程中返回的数据类型的代码

CREATE TYPE *******.ARRAY_TESTE AS VARCHAR(186) ARRAY[200];
这是我用来创建存储过程的DDL

CREATE PROCEDURE *******.TESTE_EMP2           
  (OUT EDLEVELARR MYVARRTYPE,                 
   OUT LASTNAMEARR MYVARRTYPE)                
  VERSION MEDIAN_V1                           
  LANGUAGE SQL                                
  NOT DETERMINISTIC                           
  READS SQL DATA                              
  CALLED ON NULL INPUT                        
  DYNAMIC RESULT SETS 1                       
  DISABLE DEBUG MODE                          
  PARAMETER CCSID EBCDIC                      
  QUALIFIER *******                           
  PACKAGE OWNER ******                       
  ASUTIME NO LIMIT                            
  COMMIT ON RETURN NO                         
  INHERIT SPECIAL REGISTERS                   
  NODEFER PREPARE                             
  CURRENT DATA NO                             
  DEGREE 1                                    
  DYNAMICRULES RUN                            
  WITHOUT EXPLAIN                             
  WITHOUT IMMEDIATE WRITE                     
  ISOLATION LEVEL CS                          
  WITHOUT KEEP DYNAMIC                        
  OPTHINT ''                                  
  RELEASE AT COMMIT                           
  REOPT NONE                                                    
  VALIDATE RUN                                                  
  ROUNDING DEC_ROUND_HALF_EVEN                                  
  DECIMAL(31)                                                   
  BUSINESS_TIME SENSITIVE NO                                    
  SYSTEM_TIME SENSITIVE NO                                      
  ARCHIVE SENSITIVE NO                                          
  BEGIN                                                         
    SELECT  ARRAY_AGG(VARCHAR(EDLEVEL)), ARRAY_AGG(LASTNAME)    
    INTO EDLEVELARR, LASTNAMEARR                                
    FROM DSN81110.EMP ;                                         
  END `         
LOCAL_DB2 = ****                                                  
ADDRESS DSNREXX                                                   
RC = 'SUBCOM DSNREXX'                                             
OUTTRAP TESTE_DATA.                                               
TESTE_DATA2.                                                      
IF RC <> 0 THEN DO                                                
   S_RC = RXSUBCOM('ADD','DSNREXX','DSNREXX')                     
END                                                               

"CONNECT " LOCAL_DB2                                              
IF SQLCODE <> +0 THEN DO                                          
   MY_ERROR = 'ERROR CONNECTING TO DB2 ' LOCAL_DB2                
END                                                               
EXECSQL "CALL *******.TESTE_EMP2(:TESTE_DATA.,:TESTE_DATA2.)"     
IF (SQLCODE<>0) THEN                                              
CALL SQL_ERROR                                                    

       ADDRESS DSNREXX                                            
          "DISCONNECT"                                            
           S_RC = RXSUBCOM('DELETE','DSNREXX','DSNREXX')          
 EXIT                                                             
这是我用来调用存储过程的REXX

CREATE PROCEDURE *******.TESTE_EMP2           
  (OUT EDLEVELARR MYVARRTYPE,                 
   OUT LASTNAMEARR MYVARRTYPE)                
  VERSION MEDIAN_V1                           
  LANGUAGE SQL                                
  NOT DETERMINISTIC                           
  READS SQL DATA                              
  CALLED ON NULL INPUT                        
  DYNAMIC RESULT SETS 1                       
  DISABLE DEBUG MODE                          
  PARAMETER CCSID EBCDIC                      
  QUALIFIER *******                           
  PACKAGE OWNER ******                       
  ASUTIME NO LIMIT                            
  COMMIT ON RETURN NO                         
  INHERIT SPECIAL REGISTERS                   
  NODEFER PREPARE                             
  CURRENT DATA NO                             
  DEGREE 1                                    
  DYNAMICRULES RUN                            
  WITHOUT EXPLAIN                             
  WITHOUT IMMEDIATE WRITE                     
  ISOLATION LEVEL CS                          
  WITHOUT KEEP DYNAMIC                        
  OPTHINT ''                                  
  RELEASE AT COMMIT                           
  REOPT NONE                                                    
  VALIDATE RUN                                                  
  ROUNDING DEC_ROUND_HALF_EVEN                                  
  DECIMAL(31)                                                   
  BUSINESS_TIME SENSITIVE NO                                    
  SYSTEM_TIME SENSITIVE NO                                      
  ARCHIVE SENSITIVE NO                                          
  BEGIN                                                         
    SELECT  ARRAY_AGG(VARCHAR(EDLEVEL)), ARRAY_AGG(LASTNAME)    
    INTO EDLEVELARR, LASTNAMEARR                                
    FROM DSN81110.EMP ;                                         
  END `         
LOCAL_DB2 = ****                                                  
ADDRESS DSNREXX                                                   
RC = 'SUBCOM DSNREXX'                                             
OUTTRAP TESTE_DATA.                                               
TESTE_DATA2.                                                      
IF RC <> 0 THEN DO                                                
   S_RC = RXSUBCOM('ADD','DSNREXX','DSNREXX')                     
END                                                               

"CONNECT " LOCAL_DB2                                              
IF SQLCODE <> +0 THEN DO                                          
   MY_ERROR = 'ERROR CONNECTING TO DB2 ' LOCAL_DB2                
END                                                               
EXECSQL "CALL *******.TESTE_EMP2(:TESTE_DATA.,:TESTE_DATA2.)"     
IF (SQLCODE<>0) THEN                                              
CALL SQL_ERROR                                                    

       ADDRESS DSNREXX                                            
          "DISCONNECT"                                            
           S_RC = RXSUBCOM('DELETE','DSNREXX','DSNREXX')          
 EXIT                                                             
您能帮助我吗?我试图将存储过程的输出返回到REXX程序,它说我在调用中使用的变量与我在存储过程中定义的变量不兼容

我不明白有什么问题,你能帮我吗


提前问候

此信息不言自明。在当前版本中,用户定义的数组数据类型不是REXX调用Db2存储过程所支持的数据类型之一

请参阅此部分以查看REXX支持的类型和相应的SQL数据类型