oracle - 用于解决使用的多值循环但出现错误
问题描述
ORA-06550:第 10 行,第 89 列:
PLS-00103:遇到符号“;” 当期望以下之一时:
* & - + / at mod remaining rem .. || 多组年日
CREATE OR REPLACE PROCEDURE SALE
(OUTLETID IN number,itemCod IN number,START_Date IN DATE, END_DATE IN DATE,OUTLETID1 out number,itemCod1 out number,AMOUNT OUT NUMBER,Quantity OUT NUMBER,Entry_Date out date )IS
BEGIN
select l.OUTLET_ID,itemCode,
Sum(Amount)Amount,sum(quantity)Quantity,
i.Entry_Date
INTO OUTLETID1,itemCod1,
AMOUNT,Quantity,
Entry_Date
from IDSTRANSACTION i
join lup_outlet l on l.OUTLET_ID=i.outlet_id
JOIN LUP Z ON Z.ZONE_ID=L.ZONE_ID
join prod p on p.serial =itemCode
join lup_master m on m.sup_id = p.Supplier_ID
where l.OUTLET_ID in (OUTLETID )
and itemCode in (itemCod)
and to_date(i.Entry_Date) between START_Date and END_DATE
group by l.OUTLET_ID,itemCode,i.Entry_Date
END;
----------
declare
var number;
var1 number;
var2 number;
var3 number;
var4 date;
begin
for c in (SALE( OUTLETID => 809,itemCod => 128169, START_Date=>DATE '2018-01-01',end_Date=>DATE '2019-01-01', AMOUNT => var,Quantity => var1,OUTLETID1 => var2,itemCod1 => var3,Entry_Date => var4));
loop
var:=c.AMOUNT;
var1:=c.Quantity;
var2:=c.OUTLETID1;
var3:=c.itemCod1;
var4:=c.Entry_Date;
dbms_output.enable;
dbms_output.put_line(var);
dbms_output.enable;
dbms_output.put_line(var1);
dbms_output.enable;
dbms_output.put_line(var2);
dbms_output.enable;
dbms_output.put_line(var3);
dbms_output.enable;
dbms_output.put_line(var4);
end loop;
End;
解决方案
您缺少分号,并且在第二个过程中还有一个分号,这就是代码格式化很重要的原因:
CREATE OR REPLACE PROCEDURE sale (
outletid IN NUMBER,
itemcod IN NUMBER,
start_date IN DATE,
end_date IN DATE,
outletid1 OUT NUMBER,
itemcod1 OUT NUMBER,
amount OUT NUMBER,
quantity OUT NUMBER,
entry_date OUT DATE
) IS
BEGIN
SELECT
l.outlet_id,
itemcode,
SUM(amount) amount,
SUM(quantity) quantity,
i.entry_date
INTO
outletid1,
itemcod1,
amount,
quantity,
entry_date
FROM
idstransaction i
JOIN lup_outlet l ON l.outlet_id = i.outlet_id
JOIN lup z ON z.zone_id = l.zone_id
JOIN prod p ON p.serial = itemcode
JOIN lup_master m ON m.sup_id = p.supplier_id
WHERE
l.outlet_id IN (
outletid
)
AND itemcode IN (
itemcod
)
AND TO_DATE(i.entry_date) BETWEEN start_date AND end_date
GROUP BY
l.outlet_id,
itemcode,
i.entry_date; -- THE SEMICOLON MISSING HERE
END;
----------
DECLARE
var NUMBER;
var1 NUMBER;
var2 NUMBER;
var3 NUMBER;
var4 DATE;
begin for c
in(sale(outletid => 809, itemcod => 128169, start_date => DATE '2018-01-01', end_date => DATE '2019-01-01', amount => var, quantity
=> var1, outletid1 => var2, itemcod1 => var3, entry_date => var4)) -- ; REMOVE THE SEMICOLON HERE
LOOP
var := c.amount;
var1 := c.quantity;
var2 := c.outletid1;
var3 := c.itemcod1;
var4 := c.entry_date;
dbms_output.enable;
dbms_output.put_line(var);
dbms_output.enable;
dbms_output.put_line(var1);
dbms_output.enable;
dbms_output.put_line(var2);
dbms_output.enable;
dbms_output.put_line(var3);
dbms_output.enable;
dbms_output.put_line(var4);
END LOOP;
end;
推荐阅读
- css - Google 字体和 Sass 的问题
- typescript - cypress.should 包含带有变量和子字符串的正则表达式
- flutter - 如何在颤动中制作分段色线?
- c++ - 从线性列表中删除元素
- mercurial - 找出给定两个提交哈希的提交数
- python - 左加入并仅获取熊猫中第一个字符串匹配的特定列
- random - 我们可以在带有种子参数的系统verilog中使用$random吗?
- c++ - 为什么程序只能在调试模式下工作?
- python - 在 Python 中使用 for 循环创建变量
- tensorflow - 将 tf.data.Dataset 拆分为两个不同的 Input 和 Target tf.data.Dataset