匿名pl / sql块中的声明顺序

时间:2010-06-09 14:54:27

标签: oracle plsql

我有一个匿名的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;

2 个答案:

答案 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;