标识符必须声明为ORA-06550和PLS-00201

Mor*_*ang 3 c# sql asp.net oracle11g oracle-sqldeveloper

我有两个数据库;一个在本地服务器中;

Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production
PL/SQL Release 11.1.0.7.0 - Production
"CORE   11.1.0.7.0  Production"
TNS for 64-bit Windows: Version 11.1.0.7.0 - Production
NLSRTL Version 11.1.0.7.0 - Production
Run Code Online (Sandbox Code Playgroud)

另一个是VM:

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
"CORE   11.2.0.4.0  Production"
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production
Run Code Online (Sandbox Code Playgroud)

这些服务器的其他所有内容都是相同的。我是两台服务器的DBA。所有表和存储过程都可以在两个数据库中正常工作,但是当Asp.net尝试连接到它时,一个存储过程无法正常工作。

当我运行连接到VM数据库的Asp.net应用程序时,出现以下错误,告诉我必须声明存储过程:

Message: Sys.WebForms.PageRequestManagerServerErrorException: ORA-06550: line 1, column 7: PLS-00201: identifier 'GETINFO' must be declared ORA-06550: line 1, column 7: PL/SQL: Statement ignored

我打开SQL Developer并在VM数据库上调试该过程,然后得到所需的值。如果我尝试获取特定的存储过程,它只会在.Net应用程序中发生。其他所有存储过程,其他所有东西都可以正常工作。

我为解决此问题所做的工作;

  1. 更改了程序名称(勤工俭学)
  2. 检查了架构以确保所有表和存储过程都属于正确的用户(它们确实属于正确的用户)
  3. 即使该用户创建了存储过程,我仍授予该用户访问权限。
  4. 我删除并重新创建了存储过程
  5. 我用Myuser.storedprocedure名字记号没用

我不了解的是,完全相同的代码在本地网络上运行,而且我可以通过Oracle SQL Developer调试存储过程。

我可以在这里共享存储的产品,但是它确实非常长。

我怎样才能解决这个问题?

小智 7

由于执行存储过程的权限不足,您将收到此错误。尝试在用户级别授予权限(用户级别表示您通过哪种凭据连接到数据库。请检入配置文件)。

我有同样的问题。我在Oracle DB中创建了一个存储过程。我执行了,编译成功。但是,它在运行时出现问题。在用户级别授予存储过程的权限后,该问题已完全解决。

运行时异常ORA-06550:第1行,第7列:
PLS-00201:必须声明标识符“ Package.StoredProcedure”
ORA-06550:第1行,第7列:PL / SQL:语句被忽略


u.g*_*gen 2

检查您的连接字符串并确保您从 C# 应用程序调用正确的数据库和/或架构名称。

当您在 oracle sql Developer 上调试时,如果所有其他存储过程都工作正常,而这个特定存储过程不能正常工作;一定是连接问题。如果它在 DBA 帐户下调试并在两个数据库上工作,那么也不应该出现权限问题。

我认为如果你像 mmmmmpie 在他的评论中所说的那样专注于联系,你应该找到问题所在。