Stored procedures 未使用'编译的存储过程;设置';

Stored procedures 未使用'编译的存储过程;设置';,stored-procedures,ibm-midrange,Stored Procedures,Ibm Midrange,我有一个无法编译的存储过程 CREATE PROCEDURE FINGOODSCH(IN STRDATE DATE, IN prodln Char(5)) LANGUAGE SQL RESULT SE

我有一个无法编译的存储过程

CREATE PROCEDURE FINGOODSCH(IN STRDATE DATE,           
                                 IN prodln Char(5))                                                  
        LANGUAGE SQL                                        
        RESULT SETS 1                                       
        SET OPTION DBGVIEW =*SOURCE                                                                          
    BEGIN                                                   
     Declare IN_DATE NUMERIC(7,0);
SET IN_DATE = 0;                                                          
/*     SET IN_DATE = (DECIMAL(CHAR(SUBSTR(CHAR(STRDATE),1,4);       */    
/*                   SUBSTR(CHAR(STRDATE),6,2) CONCAT               */    
 /*                  SUBSTR(CHAR(STRDATE),9,2))) - 19000000)  ;     */    

Declare FinGoodSCH Cursor for                                             
  Select TRIM(ORDNO) as OrderNumber,                                      
          ( '20' || SUBSTR(CHAR(ODUDT),2,2) || '-' ||                     
          SUBSTR(CHAR(ODUDT),4,2) || '-' ||                               
           SUBSTR(CHAR(ODUDT),6,2))  as OrderDueDate,                 
          TRIM(FITEM) as ModelNumber,                                 
          TRIM(DPTNO) as ProductionLine                               
   From ORMAST                                                        
   Where                                                              
    DPTNO = prodln                                                    

      OPEN FinGoodSCH ;    

 END                                                 
问题在于语句“在日期=0时设置”;(我知道我可以使用默认值将其设置为0,但这不是我想要的)’。如果我删除此语句,它将编译。编译错误为: SQL0104 30 3位置33标记FINGOODSCH无效。有效
代币:全球


另外,我尝试用decimal声明它,但它不起作用

在执行任何可执行代码之前,必须先用SQL进行声明

CREATE PROCEDURE FINGOODSCH(IN STRDATE DATE,           
                                 IN prodln Char(5))                                                  
        LANGUAGE SQL                                        
        RESULT SETS 1                                       
        SET OPTION DBGVIEW =*SOURCE                                                                          
BEGIN                                                   
   Declare IN_DATE NUMERIC(7,0);

   Declare FinGoodSCH Cursor for                                             
      Select TRIM(ORDNO) as OrderNumber,                                      
          ( '20' || SUBSTR(CHAR(ODUDT),2,2) || '-' ||                     
          SUBSTR(CHAR(ODUDT),4,2) || '-' ||                               
           SUBSTR(CHAR(ODUDT),6,2))  as OrderDueDate,                 
          TRIM(FITEM) as ModelNumber,                                 
          TRIM(DPTNO) as ProductionLine                               
      From ORMAST                                                        
      Where                                                              
        DPTNO = prodln;                                                    

     -- Executable code starts here....
     SET IN_DATE = (DECIMAL(CHAR(SUBSTR(CHAR(STRDATE),1,4);       
                   SUBSTR(CHAR(STRDATE),6,2) CONCAT                   
                  SUBSTR(CHAR(STRDATE),9,2))) - 19000000)  ;         

     OPEN FinGoodSCH ;    

 END   

请注意,如果您碰巧想在光标中使用IN_DATE,您仍然可以像上面那样进行操作。在DB2中打开游标之前,
DECLARE CURSOR
语句中使用的任何变量的值都不会被计算。

它起作用了。非常感谢。。救了我一天。我是SP的新手,完全陷入其中。。。谢谢