У меня проблема с хранимой процедурой в БД Oracle.Когда я пытаюсь запустить эту процедуру в Job, или пытаюсь вызвать ее из окна sql с помощью exec, она возвращает ошибку:
ORA-02291: integrity constraint violated-parent key not found
Итак, все должно быть ясно - я пытался добавить дочерний элементряд, без родительского ряда.Проблема в том, что когда я запускаю ту же функцию в режиме отладки (сразу после того, как я получил ошибку при запуске exec), и я прохожу через это шаг за шагом, все нормально ...
Фрагмент тела, который генерирует ошибку:
if length(v_plik_kursu_a)>0 or length(v_plik_kursu_c)>0 then
--sprawdź, czy istnieje wpis dla bieżacego dnia
select count(*)
into v_licznik
from tabele_kursow_walut tkw
where
tkw.id_tabeli_kursow='NBP'
and to_char(tkw.data,'yyyy-mm-dd')=to_char(v_data,'yyyy-mm-dd');
if v_licznik=0 then
insert into tabele_kursow_walut tkw
(id_tabeli_kursow,data,urzedowy_numer_tabeli,blokada)
values
('NBP',trunc(v_data),'NBP','N');
else
select data
into v_data
from tabele_kursow_walut
where
id_tabeli_kursow='NBP'
and trunc(data)=trunc(v_data);
end if;
for i in '1' .. v_liczba_walut
loop
select count(*)
into v_licznik
from kursy_walut tkw
where
tkw.id_tabeli_kursow='NBP'
and to_char(tkw.data,'yyyy-mm-dd')=to_char(v_data,'yyyy-mm-dd')
and tkw.kod_waluty=currency_array(i).name;
--raise_application_error(-20000,v_data||' - '||currency_array(i).name||' - '||currency_array(i).average_rate||' - '||currency_array(i).purchase_rate||' - '||currency_array(i).selling_rate);
if v_licznik=0 then
insert into kursy_walut kw
(id_tabeli_kursow,data,kod_waluty,kurs_sredni,kurs_kupna,kurs_sprzedazy)
values
('NBP',v_data,currency_array(i).name,currency_array(i).average_rate,currency_array(i).purchase_rate,currency_array(i).selling_rate);
else
update kursy_walut kw
set kurs_sredni=currency_array(i).average_rate,kurs_kupna=currency_array(i).purchase_rate,kurs_sprzedazy=currency_array(i).selling_rate
where
id_tabeli_kursow='NBP' and data=v_data and kod_waluty=currency_array(i).name;
end if;
end loop;
commit;
end if;
Хранимая процедура не определена как AUTONOMOUS_TRANSACTION.Появляется ошибка:
insert into kursy_walut kw
(id_tabeli_kursow,data,kod_waluty,kurs_sredni,kurs_kupna,kurs_sprzedazy)
values
('NBP',v_data,currency_array(i).name,currency_array(i).average_rate,currency_array(i).purchase_rate,currency_array(i).selling_rate);
Kursy_walut является дочерней таблицей tabele_kursow_walut.
В таблице создается ограничение, которое генерирует ошибку kursy_walut
Имя ограничения: KWL_TKW_FK
Ссылочная таблица: TABELE_KURSOW_WALUT
И ссылочные столбцы: ID_TABELI_KURSOW
, DATA
.
Ошибка из базы данных выглядит так: ORA-02291: integrity constraint violated (my_schema_name.KWL_TKW_FK) - no parent key found
И чтобы напомнить о проблеме, все работает нормально, когда я отлаживаю эту процедуру, я не получаю ошибок таким образом, но когда она выполняется: например, job, я вижу ORA-02291
error.