set serveroutput on;
Declare
cursor emp_cursor is select orderline.orderid, sum(product.productstandardprice * orderline.orderedquantity) AS price from orderline, Product WHERE orderline.Productid = Product.Productid group by orderline.orderid;
emp_row emp_cursor%rowtype;
Begin
open emp_cursor;
if (price < 2,000)
then price := 2,000 * 0.15:
else if (price >= 2,000)
then price := 2,000 * 0.20;
loop
fetch emp_cursor into emp_row;
exit when emp_cursor%notfound;
dbms_output.put_line(emp_row.orderid || ' ' || emp_row.price);
end loop;
close emp_cursor;
End;
答案 0 :(得分:1)
IF
语句已经出现。也许您希望该语句在EXIT
语句之后位于循环内?IF
语句指的是不存在的变量price
。也许您想参考emp_row.price
?IF
语句的语法为IF ... THEN ... ELSIF ... END IF
。您错过了END IF
,并且您想要将else if
合并为一个elsif
,或者有两个单独的IF
语句和两个单独的END IF
语句。< / LI>
醇>
我可能还没有看到其他语法错误。发布DDL以创建表,使用DML填充数据以及预期结果总是有帮助的。这使我们可以测试我们的系统,并使我们更有可能捕获所有错误。
答案 1 :(得分:0)
If-else语句以END IF;
尝试将其放入并运行。
答案 2 :(得分:0)
希望这会有所帮助...
Declare
cursor emp_cursor is select orderline.orderid, sum(product.productstandardprice * orderline.orderedquantity) AS price from orderline, Product WHERE orderline.Productid = Product.Productid group by orderline.orderid;
emp_row emp_cursor%rowtype;
Begin
open emp_cursor;
loop
fetch emp_cursor into emp_row;
exit when emp_cursor%notfound;
if emp_row.price < 2000 then
emp_row.price := 2000 * 0.15;
elsif emp_row.price >= 2000 then
emp_row.price := 2000 * 0.20;
end if;
dbms_output.put_line(emp_row.orderid || ' ' || emp_row.price);
end loop;
close emp_cursor;
End;