我有一个匿名的pl / sql块,其中包含一个声明的过程以及一个游标。如果我在光标之前声明该过程则失败。是否要求在程序之前声明游标?
pl / sql块中的声明顺序还有哪些其他规则?
这有效:
DECLARE
cursor cur is select 1 from dual;
procedure foo as begin null; end foo;
BEGIN
null;
END;
此操作失败,错误为PLS-00103: Encountered the symbol "CURSOR" when expecting one of the following: begin function package pragma procedure form
DECLARE
procedure foo as begin null; end foo;
cursor cur is select 1 from dual;
BEGIN
null;
END;
答案 0 :(得分:13)
需要在包/函数之前声明游标,变量,常量和类型。
这个也会失败:
DECLARE
procedure foo as begin null; end foo;
x VARCHAR2(10);
BEGIN
null;
END;
答案 1 :(得分:0)
如果你想声明一个子程序可用的游标,只需添加另一个匿名块:
DECLARE
cursor cur is select 1 from dual;
BEGIN
DECLARE
procedure foo as begin null; end foo;
BEGIN
null;
END;
END;