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



>我有一些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":
常量异常表 长双引用字符 时间戳间隔日期二进制国家字符 nchar

重要提示: 当我跳过 NUMBER 声明之前的 IN OUT 时,我得到了另一个(更严重的错误(:

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

将某些内容分配给v_index是该过程的功能核心。因此,简单地省略 IN OUT 甚至会使问题恶化。

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);
}

最新更新