Нет проблем в этом;однако, если вы хотите запустить анонимный фрагмент кода, то это не хранимая процедура , потому что они названы (то есть не анонимны).
Вот пример:
SQL> create or replace procedure p1 as
2 l_dummy number(1);
3 begin
4 select 1 into l_dummy from dual where 1 = 2;
5 exception
6 when no_data_found then
7 begin
8 select 2 into l_dummy from dual;
9 dbms_output.put_line('Exception, selected value = ' || l_dummy);
10 end;
11 end;
12 /
Procedure created.
SQL> set serveroutput on
SQL> begin
2 p1;
3 end;
4 /
Exception, selected value = 2
PL/SQL procedure successfully completed.
SQL>
Если вы хотите вызвать хранимую процедуру, проблем тоже нет:
SQL> create or replace procedure p2 as
2 l_dummy number(1);
3 begin
4 select 3 into l_dummy from dual;
5 dbms_output.put_line('P2: selected value = ' || l_dummy);
6 end;
7 /
Procedure created.
SQL> create or replace procedure p1 as
2 l_dummy number(1);
3 begin
4 select 1 into l_dummy from dual where 1 = 2;
5 exception
6 when no_data_found then
7 p2;
8 end;
9 /
Procedure created.
SQL> begin
2 p1;
3 end;
4 /
P2: selected value = 3
PL/SQL procedure successfully completed.
SQL>
Как видите, оба вариантаработа.