我有一个错误
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;
来自文档:
标签只能出现在块之前(如示例 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
的声明 - 你不需要声明循环变量,即使你这样做,范围也不同,所以它们是独立的。