运行存储过程报错如下:
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;
就可以啦