Я хочу использовать переменную связывания для передачи результатов блока pl sql из sqlplus (или sqldeveloper), НО, если блок завершается необработанным исключением, тогда любое предыдущее назначение переменной связывания игнорируется.
Примеры:
var testvar varchar2(30)
1.
begin
:testvar := 'hello';
end;
/
print testvar -- prints hello
2.
begin
:testvar := 'hello';
raise program_error;
end;
/
print testvar -- prints null
3.
begin
raise program_error;
exception
when others then
:testvar := 'hello';
end;
/
print testvar -- prints hello
4.
begin
raise program_error;
exception
when others then
:testvar := 'hello';
raise;
end;
/
print testvar -- prints null
Таким образом, если блок завершается необработанным исключением, тогда переменная связывания эффективно откатывается. Может ли это поведение по умолчанию быть изменено так, чтобы значение переменной связывания оставалось неизменным, если блок завершается с необработанным исключением?
Спасибо