如何从有效包中获取“ORA-00904 ::无效标识符”?

时间:2011-01-18 08:47:40

标签: oracle oracle9i ora-00904

我有一个有效的过程,其中包含insert..select语句。现在有一种情况,执行此过程会从此语句中生成“ORA-00904 :: invalid identifier”错误。这在理论上甚至可能如何?没有触发器或动态SQL。

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

Oracle 9.2.0.8版

EDIT2:

事实证明,在该选择中调用的函数存在问题(将其替换为常量并且一切正常)。可能这就是ORA-00904没有给出标识符的原因。但问题仍然存在 - 如果没有动态sql的预编译代码会出现此错误?

2 个答案:

答案 0 :(得分:2)

我认为当您访问包有效但程序包需要编译并抛出异常的包时,可能会发生这种错误。

另一个原因可能是使用authid current_user的代码,它以当前用户的权限运行(不像拥有用户的权限那样正常)。使用one调用时,这样的过程可能会失败,而当与其他用户一起执行时,这个过程会成功。

答案 1 :(得分:0)

由于您已找到解决方案,因此这不是您的问题。但是我想添加一个注释,如果包函数有一个正文,则会出现此错误,但规格表中没有函数签名。