如何解决PLS-00103 Oracle PLSQL错误?[重复]

v09wglhw  于 2023-04-20  发布在  Oracle
关注(0)|答案(1)|浏览(205)

此问题已在此处有答案

What is purpose of NULL at the end of this loop?(2个答案)
2天前关闭。
我得到一个错误
PLS-00103:预期出现以下情况之一时,遇到符号“END”:(开始case declare exit for后藤if loop mod null raise return select update while with〈〈continue close current delete fetch lock insert open rollback savepoint set sql execute commit forall merge standard pipe purge json_object

我的代码如下:

declare
    a int := 4;
    i int;
begin
    for i in 1..10 loop
        dbms_output.put_line(i);
        if i=a then
            goto ax;
        end if;
    end loop;
    <<ax>>
end;
2cmtqfgy

2cmtqfgy1#

来自文档:
标签只能出现在块之前(如例4-21)或语句之前(如例4-29),而不能出现在语句中,如例4-30。
正如你在例子中看到的,你可以通过添加一个null语句来解决这个问题:

declare
    a int := 4;
    --i int;
begin
    for i in 1..10 loop
        dbms_output.put_line(i);
        if i=a then
            goto ax;
        end if;
    end loop;
    <<ax>>
    null;
end;
/

在这种情况下,您也可以使用exit而不是goto

declare
    a int := 4;
    --i int;
begin
    for i in 1..10 loop
        dbms_output.put_line(i);
        if i=a then
            exit;
        end if;
    end loop;
end;
/

fiddle
在这两种情况下,我都注解掉了i的声明--你不需要声明一个循环变量,即使你声明了,作用域也是不同的,所以它们是独立的。

相关问题