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

本文关键字:ORA-06550 PLS-00201 声明 标识符 | 更新日期: 2023-09-27 18:33:40

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

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

另一个是虚拟机:

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

有关这些服务器的其他所有内容都是相同的。我是两台服务器的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 开发人员并在 VM 数据库上调试过程,并得到所需的值。仅当我尝试获取该特定存储过程时,它才会在 .Net 应用程序中发生。其他所有存储过程(即所有其他存储过程(都工作正常。

我做了什么来解决这个问题;

  1. 更改了过程的名称(不起作用(
  2. 检查架构以确保所有表和存储过程都属于正确的用户(它们属于正确的用户(
  3. 我向用户授予了访问权限,即使存储过程是由该用户创建的。
  4. 我删除并重新创建了存储过程
  5. 我使用了Myuser.storedprocedure名称表示法,它不起作用

我不明白的是,完全相同的代码正在本地网络上工作,而且我可以通过Oracle SQL Developer调试存储过程。

我可以在这里分享存储的产品,但它真的非常非常长。

我该如何解决这个问题?

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

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

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

运行时异常 ORA-06550:第 1 行,第 7 列:
PLS-00201:必须声明
标识符"包.存储过程" ORA-06550:第 1 行,第 7 列:PL/SQL:忽略语句

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

如果所有其他存储过程都工作正常,并且在 oracle sql developer 上调试时此特定存储过程无法正常工作;则一定是连接问题。如果它在 DBA 帐户下调试并处理两个数据库,则也应该不会出现权限问题。

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

当数据库中的存储过程被更改时,我收到此错误。

用于更新更改的脚本以以下内容开头:

PROCEDURE myProcedure

通过添加以下行:

CREATE OR REPLACE myProcedure

解决了此错误。就我而言,也许此错误一开始没有显示,因为它是一个新的存储过程。

我在

使用Oracle和 Asp.net MVC时遇到了这个问题。我习惯了商店程序,让我给你一个简要的介绍我们在甲骨文中有两个数据库例如。报告数据库, 生产数据库我在报告数据库上创建了存储过程,并且此外,我们在我的 Web 应用程序中有 2 个连接,例如:连接 1、连接 2错误地我被称为连接2生产数据库,但查询是在connection1数据库上准备,以便某些表无法进入存储过程,这就是我收到此错误的原因