【发布时间】:2019-04-09 10:02:42
【问题描述】:
我尝试在 plsql 过程中的游标 ('cur_palettenkosten') 操作中运行更新。
我缩小了范围,封闭游标有数据并且更新不会影响任何行(输出 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
根据需要更新数据。
有什么想法吗,我做错了什么?
【问题讨论】:
-
当然可以,但是如何找出答案!
-
对不起,我没听懂...我是从一个 SQL Developer 实例中完成的。从已编译的包中运行该过程对数据没有任何作用。将过程的内容复制到编辑器窗口并运行它,会更改数据。
-
我已将您要求的信息添加到原始问题中。
标签: sql oracle plsql oracle-sqldeveloper