在多个过程调用中使用相同的GTT事务

时间:2015-09-28 15:15:45

标签: oracle plsql global temp

我正在寻找一种方法来使用我的全局临时表进行多个过程调用...某些上下文:

全球临时表包含ID列表。它是使用on commit delete rows;子句创建的。

我的包体有1个功能和5-10个程序。我的第一次迭代有6-11个函数,直到我发现我无法返回光标,然后将其推入另一个函数,依此类推......

因此,程序会将ID保存到GTT,每个程序具有非常不同的逻辑,无法在单个查询中干净地完成。

我的问题是,当在过程调用之间跳转时(从第一个函数中调用所有过程),事务似乎以某种方式更新并刷新GTT。

我可以在每次调用函数的开始和结束时使用常规表和中继表,但必须有更好的方法。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

那时你必须在那里进行提交。

当然,您可以修改表以保留提交时的行。然后你会自己明确地删除这些行,或者当会话结束时它们将被清除。