PLS-00363:表达式'i'不能用作赋值目标

ran*_*nan 0 oracle plsql stored-procedures

CREATE or replace stored procedure test123 as
DECLARE
    i   NUMBER := 0;
BEGIN
    FOR i IN 1..10 LOOP
        INSERT INTO test123 ( empl_number ) VALUES ( i );
        i := i + 1;
    END LOOP;
END;
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建此存储过程,我收到以下错误"表达式'我'不能用作任务目标"

任何人都可以对可能出现此错误的原因提出一些见解吗?

谢谢.

MT0*_*MT0 5

您已将其声明i为变量两次.首先作为局部变量,然后是循环中的第二个变量,它会遮蔽局部变量.

您正在尝试为循环变量赋值 - 这是不允许的(您不需要增加循环变量;这将自动发生)

此外,您不应包含STOREDDECLARE单词,因为它们是无效的语法.

所以你可以简单地把它写成:

CREATE or replace procedure test123 as
BEGIN
    FOR i IN 1..10 LOOP
        INSERT INTO table_name ( empl_number ) VALUES ( i );
    END LOOP;
END;
/
Run Code Online (Sandbox Code Playgroud)