Oracle 我在这个PL/SQL语句中做错了什么?
有谁能帮我解释一下我在这篇小声明中做错了什么Oracle 我在这个PL/SQL语句中做错了什么?,oracle,plsql,syntax-error,Oracle,Plsql,Syntax Error,有谁能帮我解释一下我在这篇小声明中做错了什么 declare cursor emp_cursor is select employee_id, quantity * salary AS price from employees; emp_row emp_cursor%rowtype; begin open emp_cursor; if (price < 2,000) then price := 2,000 * 0.15;
declare
cursor emp_cursor is
select employee_id, quantity * salary AS price
from employees;
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.employee_id || ' ' || emp_row.price);
end loop;
close emp_cursor;
end;
声明
光标emp_光标为
选择员工id、数量*工资作为价格
来自员工;
emp_行emp_光标%rowtype;
开始
打开emp_光标;
如果(价格<2000)
则价格:=2000*0.15;
否则,如果(价格>=2000)
则价格:=2000*0.20;
环
将emp_光标提取到emp_行;
未找到emp_游标%n时退出;
dbms|u output.put|u line(emp|u row.employee|u id |“| emp|u row.price);
端环;
关闭emp_光标;
结束;
我使用的是pl/sql developer。在比较中去掉“,”
if (price < 2,000)
if(价格<2000)
是一个语法错误。如果你的意思是2E0,写2,如果你的意思是2E3,写2000
你们的价格应该是emp_row.price。并在退出后输入您的if。。。你必须先打开,取光标。然后处理行并关闭光标。使用变量而不是emp_row.price时,代码更简洁。对于ex,如果emp_行价格<2000-则v_价格:=2000*0.15。。。去掉数字中的逗号
loop
fetch emp_cursor into emp_row;
exit when emp_cursor%notfound;
if (emp_row.price < 2000) then....
....
end if;
dbms_output.put_line(emp_row.employee_id || ' ' || emp_row.price);
end loop;
....
循环
将emp_光标提取到emp_行;
未找到emp_游标%n时退出;
如果(emp_row.price<2000),则。。。。
....
如果结束;
dbms|u output.put|u line(emp|u row.employee|u id |“| emp|u row.price);
端环;
....
想想你在做什么。。。当你第一次访问price
时,你从哪里得到的?添加缩进也很有帮助……在写问题时,如果你能始终包含错误消息和你想要表达的想法,那也太棒了。谢谢这个计划真的没有意义。你希望做什么?这毫无意义。您试图解决的真正问题是什么?您犯的错误是没有读取错误消息,这些消息告诉您语法不正确。我在哪里写的2000是有效的或建议使用它的?