首页 文章

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

提问于
浏览
5

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

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

Oracle 9.2.0.8版

EDIT2:

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

2 回答

  • 0

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

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

  • 2

    既然你已经找到了解决方案,这不是你的问题 . 但是我想添加一个注释,如果包函数有一个主体,你会收到这个错误,但是在Spec表中没有函数签名 .

相关问题