如何修复有关PL / SQL中的索引变量的错误:PLS-00103

时间:2019-08-15 18:42:05

标签: oracle plsql

我有一些PL / SQL代码,本质上是尝试使用索引变量运行循环:

CREATE OR REPLACE PROCEDURE p_print_nr(v_nr IN NUMBER) IS
  v_index IN OUT NUMBER := 1;
BEGIN
    FOR v_index IN 1 .. v_nr LOOP
      DBMS_OUTPUT.PUT_LINE('Value is: '||v_index);
      v_index :=  v_index +1;
   END LOOP;
END;

ORACLE SQL Developer用以下错误消息来打击我:

  

错误(3,9):PLS-00103:预期以下情况之一时遇到符号“ IN”:
  常量异常表long double ref char time时间戳记间隔日期二进制二进制国家字符nchar

重要说明: 当我在NUMBER声明之前跳过IN OUT时,会遇到另一个错误(甚至更严重的错误):

  

错误(7,3):PLS-00363:表达式'v_index'不能用作分配目标

为v_index分配某些内容是该过程的功能核心。因此,简单地省略IN OUT甚至会使问题变得更糟。

1 个答案:

答案 0 :(得分:4)

FOR ... LOOP构造处理索引的声明和增量。

所以您所需要的只是...

CREATE OR REPLACE PROCEDURE p_print_nr(v_nr IN NUMBER) IS
BEGIN
    FOR v_index IN 1 .. v_nr LOOP
      DBMS_OUTPUT.PUT_LINE('Value is: '||v_index);
   END LOOP;
END;

该构造与Java中的构造一样是独立的:

for (int v_index = 0; v_index < v_nr; v_index++) {
   System.out.println(v_index);
}