oracle的ora 00904,关于oracle:如何从有效的软件包中获取“ ORA-00904::无效标识符”?…

我有一个有效的过程,并且在其中有一个insert..select语句。 现在,存在一种情况,该过程的执行会从此语句中产生” ORA-00904 ::无效标识符”错误。 从理论上讲这怎么可能没有触发器或动态SQL。

另外,sqlerrm中的ORA-00904文本没有指向Oracle认为无效的任何特定标识符的指针。

Oracle 9.2.0.8版

编辑2:

事实证明,在该select中调用的函数存在问题(将其替换为常量,并且一切正常)。 可能是ORA-00904没有提供标识符的原因。 尽管如此,问题仍然存在-没有动态sql的预编译代码怎么会出现此错误/p>

您可以张贴一些示例代码吗/p>

有意见吗根据您所说的话,我猜您已经为打印SQLERRM的所有错误(when others)获得了异常处理程序; 如果您没有,无论如何都会引发异常,并且会提供有关异常源的更多信息。

您确定的函数以及依次调用的任何函数也没有动态SQL链中是否有任何authid current_user子句,这可能会影响编译和运行时之间的行为(特权和解析)您是否依赖于任何不授予角色的角色授予的priv/p>

“现在有一种情况……”是否意味着它并不总是产生此错误/p>

@Rene仅在一种特定情况下才产生该错误。 我们解决了这个问题(没有代码更改,没有数据更改),并且我们再也没有看到过这个问题。

您是否使用一些负载平衡的环境/p>

我认为,当您访问一个有效但实体需要编译并引发异常的软件包时,可能会发生这种错误。

另一个原因可能是带有authid current_user的代码,它以当前用户的特权运行(而不是拥有用户特权的正常运行)。 这样的过程可能在一次调用时失败,而在另一用户执行时成功。

由于您已经找到了解决方案,所以这不是您的问题。 但我想补充一点,如果包函数具有主体,但在规格表中没有函数签名,则会出现此错误。

相关资源:软件测试报告范例软件测试报告范例软件测试报告范例_软件测试报告…

来源:圣范锦意

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年3月1日
下一篇 2021年3月1日

相关推荐