Oracle存储过程-跟踪验证错误

时间:2019-07-31 13:32:49

标签: database oracle stored-procedures temp-tables

我正在将MsSQL存储过程转换为Oracle,但是遇到了一个使我对这两种实现都感到怀疑的问题。

Sql Server版本在存储过程内创建一个临时表,以跟踪关于可能是有点大的数据集(数十万条记录)的验证错误。每个验证查询都会使用适当的错误消息(特定于查询)将临时ID选择到临时表中。完成所有验证后,将错误插入到真实表中(该表没有存储ID的列)。然后,通过从临时错误表中滤除ID,可以轻松地插入有效行。

我希望这是有道理的。重申一下,我之所以不简单使用“真正的”错误表,是因为它不包含供我存储无效行的ID的列(我无法更改)。

我知道我可以在Oracle中使用普通/全局临时表,但是我读得越多,听起来就越不明智。在Oracle中,有什么好的选择?收藏吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

为什么不将错误发生时仅将错误插入真正的目标表中,而不是将其插入#TEMP表中,然后再将其移动?您没有列出您的Oracle版本,但是您可以在系统上创建一个全局临时表,然后在存储过程中,将在插入时创建会话临时表的私有表。但是,Oracle中通常不需要临时表。整个过程设计听起来令人怀疑。在Oracle中,可以批量插入捕获批量操作中单个行错误的数据。如果您或团队中的某些成员对Oracle的工作原理有很好的了解,那么此过程似乎适合进行重构(重新设计)。

相关问题