错误报告:索引处缺少IN或OUT参数:: 1.我该如何解决?

时间:2013-11-15 03:15:07

标签: plsql oracle-sqldeveloper plsqldeveloper

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;

3 个答案:

答案 0 :(得分:1)

  1. 0.15后你有一个冒号。那应该是一个分号。
  2. 数字文字不应包含逗号。
  3. 在您从光标中获取任何内容之前,您的IF语句已经出现。也许您希望该语句在EXIT语句之后位于循环内?
  4. 您的IF语句指的是不存在的变量price。也许您想参考emp_row.price
  5. 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;