gpt4 book ai didi

c# - 每次后续调用都使 Oracle 包无效

转载 作者:行者123 更新时间:2023-11-30 14:15:35 24 4
gpt4 key购买 nike

ODP.Net 方法调用一个打包的存储过程,每次调用时都会重新创建一个表。在随后的每次调用中它都会抛出错误

ORA-04061: existing state of package body "SAAP.PRICEWORX" has been invalidated
ORA-06508: PL/SQL: could not find program unit being called: "SAAP.PRICEWORX"

我怎样才能避免这种情况?

最佳答案

我的直接猜测是您的包也删除或引用了您正在创建的表。因此,在某些时候,包可能会尝试引用一个不存在的表。

事件的顺序可能是这样的:

  1. 表存在
  2. 使用表格
  3. 放下 table
  4. 尝试再次使用表 - 包无效,因为表不再存在。
  5. 创建表 - 一切都恢复正常。

简单的答案不是在代码中创建或删除表。创建 global temporary table反而。这使表格始终存在。

更糟糕的选择是包装每个使用该表的调用,该表可能存在也可能不存在于 execute immediate 中。

如果我完全错了,那么您需要调查为什么您的包裹无效并发布结果。它无效的事实并不意味着什么。

关于c# - 每次后续调用都使 Oracle 包无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9750063/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com