【问题标题】:Insert into global temporary table operation failed插入全局临时表操作失败
【发布时间】:2013-07-21 05:42:45
【问题描述】:

将我的临时表数据存储到plsql表类型的选择语句:

select * from Global_temporary_table
bulk collect into plsql_table_type;

进行一些转换后,当我尝试使用下面的插入语句将数据插入 Global_temporary_table 表时

INSERT INTO Global_temporary_table
VALUES v_rbct_tbl(i);
COMMIT;

它未能完成插入事务。但是,如果我尝试将相同的数据插入到非全局临时表,它不会产生任何问题。

请帮帮我!

【问题讨论】:

  • "it failed to complete the insert transaction" :您的意思是事务显式失败(请分享您可能收到的错误消息),还是您的数据没有插入?还是损坏了?
  • 我没有收到任何错误,但正如 Florin 解释的那样,commit 是我正在做的错误,因为来自 GTT 的所有数据都被删除了。不管怎样,谢谢你的关心。

标签: sql oracle plsql


【解决方案1】:

几乎可以肯定您的提交会删除数据。 GTT 中的数据是不稳定的,并且在提交后(ON COMMIT DELETE ROWS)或会话结束后(ON COMMIT PRESERVE ROWS)消失。

如果您需要在提交后保留数据,请使用 ON COMMIT PRESERVE ROWS 创建表。

docs

【讨论】:

    猜你喜欢
    • 2010-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 2017-10-02
    • 2023-03-27
    • 1970-01-01
    相关资源
    最近更新 更多