【问题标题】:Running update from SQL Developer with different results as from package从 SQL Developer 运行更新,结果与包中的不同
【发布时间】: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


【解决方案1】:

是否可以为每个标签打开一个新会话?那么你当然必须提交更新!

【讨论】:

  • 感谢您的想法,但我们从同一个编辑器选项卡执行脚本和匿名块。
猜你喜欢
  • 2021-05-17
  • 1970-01-01
  • 1970-01-01
  • 2014-06-29
  • 2016-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-19
相关资源
最近更新 更多