我有一些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甚至会使问题变得更糟。
答案 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);
}