Я попытался запустить обновление в рамках операции курсора ('cur_palettenkosten') в процедуре plsql.
Я сузил, что вмещающий курсор содержит данные и что обновление не влияет ни на какие строки (выводsql% rowcount)
PROCEDURE p_ref_lschein_rueckstellungen AS
for cur_palettenkosten in (
select land, spediteur_nr, plz_von, plz_bis, preis, gueltig_von, geultig_bis, gzp.behaelter_nr
from spediteur_fahrtkosten sp,gutschrift_zuord_pal gzp
where sp.behaelter_nr = 1
)
LOOP
UPDATE lschein_rueckstellungen
SET preis = cur_palettenkosten.preis
WHERE to_number(sped_nr) = to_number(cur_palettenkosten.spediteur_nr)
AND to_number(lhm_typ) = to_number(cur_palettenkosten.behaelter_nr)
AND to_char(kst) = to_char(cur_palettenkosten.land);
dbms_output.put_line (cur_palettenkosten.spediteur_nr || ' '||cur_palettenkosten.behaelter_nr|| ' '|| cur_palettenkosten.land || sql%rowcount);
END LOOP;
COMMIT;
END p_ref_lschein_rueckstellungen;
Запуск сценария из редактора следующим образом:
BEGIN
p_ref_lschein_rueckstellungen;
END
не влияет на таблицу 'lschein_rueckstellungen', которую я хотел обновить.
Запуск его из того же окна редактора, как это:
BEGIN
<procedure content copied here>
END
обновляет данные по желанию.
Есть какие-нибудь идеи, что я сделал не так?