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

  • 您不能使用1000分隔符。如果价格<2000,则写入,而不是如果价格<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是有效的或建议使用它的?