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

Posted

技术标签:

【中文标题】错误报告:索引处缺少 IN 或 OUT 参数: : 1. 我该如何解决?【英文标题】:Error report: Missing IN or OUT parameter at index: : 1. How can I fix that? 【发布时间】:2013-11-15 03:15:07 【问题描述】:
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.15之后应该是分号 价格确实存在。它是在 Declare 下的语句中作为别名创建的。在我开始放置 if 语句之前,我检查了程序以确保它可以工作并且它确实有效。只有在放入 if 语句后,我才开始遇到问题。 【参考方案1】:
    0.15 之后有一个冒号。那应该是一个分号。 数字文字不应嵌入逗号。 您的IF 语句出现在您从游标中获取任何内容之前。或许您希望该语句位于 EXIT 语句之后的循环内? 您的IF 语句引用了一个不存在的变量price。或许你想参考emp_row.priceIF 语句的语法是IF ... THEN ... ELSIF ... END IF。您缺少 END IF 并且您想要将 else if 合并为一个 elsif 或拥有两个单独的 IF 语句和两个单独的 END IF 语句。

可能还有我没有看到的其他语法错误。发布 DDL 以创建表、发布 DML 以填充数据以及预期结果总是有帮助的。这使我们能够在我们的系统上进行测试,并更有可能捕获所有错误。

【讨论】:

【参考方案2】:

If-else 语句以END IF; 结尾

尝试将其放入并运行。

【讨论】:

【参考方案3】:

希望这会有所帮助...

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;

【讨论】:

以上是关于错误报告:索引处缺少 IN 或 OUT 参数: : 1. 我该如何解决?的主要内容,如果未能解决你的问题,请参考以下文章

线程“主”java.sql.SQLException 中的异常:索引处缺少 IN 或 OUT 参数:: 25 这个错误是啥意思

java.sql.SQLException:索引处缺少 IN 或 OUT 参数:: 1

以下错误是啥意思:java.sql.sqlexception 在索引处缺少输入或输出参数

java.sql.SQLException: 索引中丢失 IN或OUT 参数::x

解决SQL报错:索引中丢失IN或OUT參数

解决SQL报错:索引中丢失IN或OUT參数