Триггер срабатывает на столе, но выборка на таблице возвращает ноль. Как я могу создать код для доступа к строке, которая сработала триггером?
У меня в триггере следующее:
begin
dws_edi_api.init_edi_message(message_id,order_no',supplier_no');
end;
Это срабатывает при обновлении столбца row_state в таблице out_message_tab
Событие срабатывает нормально, но когда в процедуре dws_edi_api.init_edi_message_line я делаю выбор c08 из out_message_tab, где message_id = message_id_ (переменная из триггера). он возвращает ноль.
Я предполагаю, что изменение не было совершено. Я попытался добавить коммит в качестве первой строки в моем коде, чтобы принудительно зафиксировать изменение, но это не помогает. Я попытался добавить dbms_lock.sleep (! 0), но это тоже не помогает.
Я добавляю код к процедуре в поле «показать код»
procedure init_edi_message_line(message_id in number) is
pragma autonomous_transaction;
message_id_ number;
order_no_ varchar2(20);
supplier_no_ varchar2(20);
c08_ varchar2(200);
cursor c1 is
select c08
from jdifs.out_message_line_tab
where message_id = message_id_
and name = 'HEADER';
begin
-- dbms_lock.sleep(10);
message_id_ := message_id;
open c1;
loop
fetch c1
into c08_;
exit when c08_ is not null;
insert into jdifs.jdws_temp_line_tab
values
(message_id_, '2', c08_, '4');
commit;
END LOOP;
close c1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
-- Do something
null;
WHEN OTHERS THEN
null;
end init_edi_message_line;
РЕДАКТИРОВАТЬ:
Привет, нет, это, к сожалению, не решило проблему,
Я постараюсь еще раз объяснить как можно больше.
У меня есть триггер на таблице с именем out_message_line_tab. Когда в этой таблице создается строка, она содержит большое количество столбцов.
мне интересны: message_id (порядковый номер), order_no (P123456), supplier_no (11242), linenumber (1), part_no (F1524).
Когда срабатывает триггер, необходимо извлечь данные из этой таблицы (и в этом случае таблицы, «связанной с этой таблицей», out_message_tab.
Таким образом, триггер находится в out_message_line_tab, но этого недостаточно для отправки значений в триггере в процедуру, поскольку мне также нужны некоторые данные из другой таблицы.
Первичный ключ между таблицами out_message_tab и out_message_line_tab - message_id
Так что моя проблема в том, как сделать выбор из out_message_tab, где message_id = message_id (первичный ключ из out_message_line_tab
Когда я это делаю, он просто говорит, что данные не найдены. Я предполагаю это, потому что это еще не было передано.
Надеюсь, это понятнее.