- PVSM.RU - https://www.pvsm.ru -
Периодически Oracle разработчики сталкиваются с проблемой отладки PL/SQL кода, когда код вызывается из веба или среднего слоя(т.е. когда сессия разработчика не совпадает с сессией в которой возникает проблема).
Особенно актуально, если какие-либо проблемы возникают на стороне Web при двухзвенных и трехзвенная схемах взаимодействия БД и Web(ниже пример трехзвенной архитектуры взаимодействия):

Рисунок 1 — Трехзвенная архитектура взаимодействия БД и Web.
В решение проблем с отладкой PL/SQL кода нам помогут пакеты:
create or replace procedure checkout_with_pipe_and_alert(p_cycle_size in number) is
c_method_error constant number := -20000;
c_method_error_message constant varchar2(4000) := 'Cycle size should be > 0';
l_power_value number;
l_i_value number := 1;
l_pipe pls_integer;
begin
if p_cycle_size > 0 then
for i in 1 .. p_cycle_size
loop
l_power_value := power(i, 2);
l_i_value := l_i_value * i;
--Send pipe info
l_pipe := dbms_pipe.create_pipe(pipename => 'pipe');
dbms_pipe.pack_message(i || '.l_power_value:=' || l_power_value || ' l_i_value=' || l_i_value);
l_pipe := dbms_pipe.send_message(pipename => 'pipe');
--Send alert info
dbms_alert.register('alert');
dbms_alert.signal(name => 'alert',
message => i || '.l_power_value:=' || l_power_value || ' l_i_value=' || l_i_value);
dbms_alert.remove(name => 'alert');
end loop;
else
raise_application_error(c_method_error, c_method_error_message);
end if;
end checkout_with_pipe_and_alert;

Рисунок 2 — Раздача грантов c Oracle сервера схемы SYS на рабочую схему
Отлавливание сообщений при помощи кода не рассматриваю, т.к. информации достаточно в Oracle DOC и на просторах интернета.
Заходим в Tools→Event Monitor..., в одном окне выбираем тип события "Pipe", а в другом "Alert" в Event name указываем название пайпы и алерта, которые задали в коде и нажимаем Start:
![]()
Рисунок 3 — Настройка окна с Pipe
![]()
Рисунок 4 — Настройка окна с Alert
begin
checkout_with_pipe_and_alert(5);
end;

Рисунок 5 — Результат получения информации от Pipe

Рисунок 6 — Результат получения информации от Alert
Выводы:
Автор: Юрий Пухов
Источник [1]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/oracle/264762
Ссылки в тексте:
[1] Источник: https://habrahabr.ru/post/339122/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.