Порядок объявления в анонимном pl/sql блоке

У меня есть анонимный 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;
5
задан aw crud 9 June 2010 в 14:54
поделиться

2 ответа

Курсоры, переменные, константы и типы должны быть объявлены перед пакетами/функциями.

Это тоже не получится:

DECLARE
 procedure foo as begin null; end foo;
 x VARCHAR2(10);
BEGIN
 null;
END;
13
ответ дан 18 December 2019 в 14:42
поделиться

Если вы хотите объявить курсор, доступный и для подпроцедуры, просто добавьте еще один анонимный блок:

DECLARE
 cursor cur is select 1 from dual;
BEGIN
 DECLARE
  procedure foo as begin null; end foo;
 BEGIN
  null;
 END;
END;
0
ответ дан 18 December 2019 в 14:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: