Можно ли объявить подпроцедуру в блоке «объявления» окна тестирования разработчика PL / SQL? - PullRequest
1 голос
/ 12 марта 2020

Мне нужно протестировать хранимую процедуру с несколькими подпроцедурами в блоке is. Я скопировал все в тестовое окно, однако помещение этих подпроцедур в блок declare, похоже, не работает. Когда я пытаюсь вызвать их из блока begin, я получаю сообщение о том, что они не были объявлены. Я не изменил ничего, кроме перемещения содержимого is в declare. Что я могу сделать?

1 Ответ

6 голосов
/ 12 марта 2020

Вы можете объявить процедуру, однако:

1) Вы объявляете ее без ключевых слов 'create or replace'
2) Если вы объявляете какие-либо переменные в одном и том же блоке, все процедуры и функции должны быть объявлены после последнего объявления переменной.

Так, например, это:

declare

   some_text varchar2(10) := 'SOME_TEXT';

   procedure print_4 is 

      x number := 4;
   begin
      dbms_output.put_line(x);
   end print_4;
begin
   print_4;
end;

является допустимым блоком pl / sql, тогда как это:

declare

   procedure print_4 is 

      x number := 4;
   begin
      dbms_output.put_line(x);
   end print_4;

   some_text varchar2(10) := 'SOME_TEXT';
begin
   print_4;
end;

это не так.

Если вы опубликуете свой код, мы можем найти другие ошибки.

...