Compilation errors for FUNCTION AWCARGOWEBJMNEW.FUN_GETVSLVOY161110 Error: PLS-00103: Encountered t
运行存储过程报错如下:
Compilation errors for FUNCTION AWCARGOWEBJMNEW.FUN_GETVSLVOY161110
 Error: PLS-00103: Encountered the symbol “SELECT” when expecting one of the following:
        
           ( – + case mod new not null 
            
           continue avg count current exists max min prior sql stddev
           sum variance execute forall merge time timestamp interval
           date 
             pipe
           
           
 Line: 1628
 Text: SELECT NVL(SUM(Fun_GetWMSCount(SvcOrderBill.OrderBillID,
 Error: PLS-00103: Encountered the symbol “)” when expecting one of the following:
        
           * & – + ; / at for mod remainder rem 
           or group having intersect minus order start union where
           connect || multiset
 Line: 1653
 Text: AND Fun_GetWMSCount(SvcOrderBill.OrderBillID, 5) < 500);
 Error: PLS-00103: Encountered the symbol “SELECT” when expecting one of the following:
        
           ( – + case mod new not null 
            
           continue avg count current exists max min prior sql stddev
           sum variance execute forall merge time timestamp interval
           date 
             pipe
           
           
 Line: 1660
 Text: SELECT NVL(SUM(Fun_GetWMSCount(SvcOrderBill.OrderBillID,
 Error: PLS-00103: Encountered the symbol “)” when expecting one of the following:
        
           * & – + ; / at for mod remainder rem 
           or group having intersect minus order start union where
           connect || multiset
 Line: 1685
 Text: AND Fun_GetWMSCount(SvcOrderBill.OrderBillID, 5) < 500);
 Error: PLS-00103: Encountered the symbol “SELECT” when expecting one of the following:
        
           ( – + case mod new not null 
            
           continue avg count current exists max min prior sql stddev
           sum variance execute forall merge time timestamp interval
           date 
             pipe
           
           
 Line: 1696
 Text: SELECT NVL(SUM(Fun_GetWMSCount(SvcOrderBill.OrderBillID, 5)),
 Error: PLS-00103: Encountered the symbol “)” when expecting one of the following:
        
           * & – + ; / at for mod remainder rem 
           or group having intersect minus order start union where
           connect || multiset
 Line: 1719
 Text: AND Fun_GetJHFlag(SvcOrderBill.OrderBillID) = 0);
 Error: PLS-00103: Encountered the symbol “SELECT” when expecting one of the following:
        
           ( – + case mod new not null 
            
           continue avg count current exists max min prior sql stddev
           sum variance execute forall merge time timestamp interval
           date 
             pipe
           
           
 Line: 1768
 Text: SELECT NVL(SUM(Fun_GetWMSCount(SvcOrderBill.OrderBillID,
 Error: PLS-00103: Encountered the symbol “)” when expecting one of the following:
        
           * & – + ; / at for mod remainder rem 
           or group having intersect minus order start union where
           connect || multiset
 Line: 1800
 Text: END) < 300);
 Error: PLS-00103: Encountered the symbol “SELECT” when expecting one of the following:
        
           ( – + case mod new not null 
            
           continue avg count current exists max min prior sql stddev
           sum variance execute forall merge time timestamp interval
           date 
             pipe
           
           
 Line: 1807
 Text: SELECT NVL(SUM(Fun_GetWMSCount(SvcOrderBill.OrderBillID,
 Error: PLS-00103: Encountered the symbol “)” when expecting one of the following:
        
           * & – + ; / at for mod remainder rem 
           or group having intersect minus order start union where
           connect || multiset
 Line: 1839
 Text: END) < 300);
 Error: PLS-00103: Encountered the symbol “SELECT” when expecting one of the following:
        
           ( – + case mod new not null 
            
           continue avg count current exists max min prior sql stddev
           sum variance execute forall merge time timestamp interval
           date 
             pipe
           
           
 Line: 1850
 Text: SELECT NVL(SUM(Fun_GetWMSCount(SvcOrderBill.OrderBillID, 5)),
 Error: PLS-00103: Encountered the symbol “)” when expecting one of the following:
        
           * & – + ; / at for mod remainder rem 
           or group having intersect minus order start union where
           connect || multiset
 Line: 1873
 Text: AND Fun_GetJHFlag(SvcOrderBill.OrderBillID) = 0);
 Error: Hint: Variable ‘v_lWeightcountZC’ is declared but never used in ‘Fun_GetVslVoy161110’
 Line: 17
 Text: v_lWeightcountZC              –当天已激活板仓位
 Error: Hint: Variable ‘v_lWeightcountZC1’ is declared but never used in ‘Fun_GetVslVoy161110’
 Line: 19
 Text: v_lWeightcountZC1             –当天已订舱仓位
 Error: Hint: Variable ‘v_lWeightcountZC2’ is declared but never used in ‘Fun_GetVslVoy161110’
 Line: 21
 Text: v_lWeightcountZC2             –当天众筹份数
 Error: Hint: Variable ‘v_lWeightcountZCReal’ is declared but never used in ‘Fun_GetVslVoy161110’
 Line: 23
Text: v_lWeightcountZCReal –应扣除板仓位
看了下语法没有什么问题, 但是试了一上午June搞不定, 中午吃饭的时候反复想这里报错:
写法很怪:
  RETURN v_lScheduleReadyWeightDown – (
                     SELECT NVL(SUM(Fun_GetWMSCount(SvcOrderBill.OrderBillID,
                                                    5)),
                                0) ScheduleOp1Weight
                       FROM SvcOrderBill,
                            SvcOrderCustomer,
                            SvcOrderOperate,
                            SvcOrderQuantity
                      WHERE SvcOrderBill.OrderQuantityID =
                            SvcOrderQuantity.OrderQuantityID
                        AND SvcOrderBill.OrderOperateID =
                            SvcOrderOperate.OrderOperateID
                        AND SvcOrderBill.OrderCustomerID =
                            SvcOrderCustomer.OrderCustomerID
                        AND NVL(SvcOrderCustomer.SelfFlag, 0) = 0
                        AND SvcOrderCustomer.ScheduleIndex = v_ScheduleIndex
                        AND SvcOrderOperate.Op1Flag = 1
                        AND SvcOrderOperate.Op40Flag = 1
                        AND SvcOrderOperate.Op57Flag <> 1
                        AND SvcOrderOperate.Op22Flag <> 1
                        AND SvcOrderOperate.Op22Flag <> 2
                        AND SUBSTR(SvcOrderBill.OrderBillCode, 0, 2) = ‘DS’
                        AND SvcOrderBill.ShippingDate = v_Shippingdate
                        AND Fun_GetWebOrderStatus(SvcOrderBill.OrderBillCode) <>
                            ‘取消中’
                        AND Fun_GetJHFlag(SvcOrderBill.OrderBillID) = 0
                        AND (CASE
                             Fun_GetWMSCount(SvcOrderBill.OrderBillID, 25)
                              WHEN 0 THEN
                               0
                              ELSE
                               (Fun_GetWMSCount(SvcOrderBill.OrderBillID, 5) /
                               NVL(Fun_GetWMSCount(SvcOrderBill.OrderBillID, 23),1))– modified by Aaron
                            END) < 300);
我改成了人类容易理解的方法:
 SELECT NVL(SUM(Fun_GetWMSCount(SvcOrderBill.OrderBillID,
                                                    5)),
                                0) ScheduleOp1Weight
                                into  v_ScheduleOp1Weight
                       FROM SvcOrderBill,
                            SvcOrderCustomer,
                            SvcOrderOperate,
                            SvcOrderQuantity
                      WHERE SvcOrderBill.OrderQuantityID =
                            SvcOrderQuantity.OrderQuantityID
                        AND SvcOrderBill.OrderOperateID =
                            SvcOrderOperate.OrderOperateID
                        AND SvcOrderBill.OrderCustomerID =
                            SvcOrderCustomer.OrderCustomerID
                        AND NVL(SvcOrderCustomer.SelfFlag, 0) = 0
                        AND SvcOrderCustomer.ScheduleIndex = v_ScheduleIndex
                        AND SvcOrderOperate.Op1Flag = 1
                        AND SvcOrderOperate.Op40Flag = 1
                        AND SvcOrderOperate.Op57Flag <> 1
                        AND SvcOrderOperate.Op22Flag <> 1
                        AND SvcOrderOperate.Op22Flag <> 2
                        AND SUBSTR(SvcOrderBill.OrderBillCode, 0, 2) = ‘DS’
                        AND SvcOrderBill.ShippingDate = v_Shippingdate
                        AND Fun_GetWebOrderStatus(SvcOrderBill.OrderBillCode) <>
                            ‘取消中’
                        AND Fun_GetJHFlag(SvcOrderBill.OrderBillID) = 0
                        AND (CASE
                             Fun_GetWMSCount(SvcOrderBill.OrderBillID, 25)
                              WHEN 0 THEN
                               0
                              ELSE
                               (Fun_GetWMSCount(SvcOrderBill.OrderBillID, 5) /
                               NVL(Fun_GetWMSCount(SvcOrderBill.OrderBillID, 23),1))– modified by Aaron
                            END) < 300;
                            RETURN v_lScheduleReadyWeightDown-v_ScheduleOp1Weight;
就可以啦