如何解决 PLS-00103 Oracle PLSQL 错误?

问题描述 投票:0回答:1

我有一个错误

PLS-00103:在期望以下之一时遇到符号“END”: ( begin case declare exit for goto if loop mod null raise 返回选择更新,同时 << 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;
plsql oracle-sqldeveloper plsqldeveloper
1个回答
0
投票

来自文档

标签只能出现在块之前(如示例 4-21)或语句之前(如示例 4-29),而不能出现在语句中,如示例 4-30。

如您在示例中所见,您可以通过添加空语句来解决此问题:

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;
/

小提琴

在这两种情况下,我都注释掉了

i
的声明 - 你不需要声明循环变量,即使你这样做,范围也不同,所以它们是独立的。

© www.soinside.com 2019 - 2024. All rights reserved.