2013-07-22 34 views
1

SELECT语句来我临时表数据存储到PLSQL表型INSERT INTO全局临时表操作失败

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; 

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

请帮帮我!

+1

“它未能完成插入交易”:你的意思是明确地交易失败(请分享您可能会收到错误消息),或者是你的数据不被插入?或损坏? – RandomSeed

+0

我没有得到任何错误,但如弗洛林所解释的那样,'commit'是我所做的错误,因为所有来自GTT的数据都被删除了。无论如何,谢谢你的关注。 –

回答

2

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

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

docs

+0

非常感谢回复。有效。 :) –