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

标签 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

另一个是虚拟机:

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 应用程序时,出现以下错误,告诉我必须声明存储过程:

消息:Sys.WebForms.PageRequestManagerServerErrorException:ORA-06550:第 1 行,第 7 列: PLS-00201: 必须声明标识符 'GETINFO' ORA-06550:第 1 行,第 7 列: PL/SQL:语句被忽略

我打开我的 SQL Developer 并调试 VM 数据库上的过程,我得到了所需的值。 如果我尝试获取特定的存储过程,它只会在 .Net 应用程序中发生。其他一切,作为所有其他存储过程,都运行良好。

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

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

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

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

我该如何解决这个问题?

最佳答案

您收到此错误是因为执行存储过程的权限不足。尝试在用户级别授予权限(用户级别意味着您连接到数据库的凭据。检查您的配置文件)。

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

Run-time Exception ORA-06550: line 1, column 7:
PLS-00201: identifier 'Package.StoredProcedure' must be declared
ORA-06550: line 1, column 7: PL/SQL: Statement ignored

关于c# - 标识符必须声明为 ORA-06550 和 PLS-00201,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27366851/

相关文章:

c# - 我怎么知道是否存在不需要的 RenderSection?

asp.net - 使用 IIS/Asp.Net 从内存流式传输 AVI 文件

c# - 如何使用 MySQL 和 C#(MySQL 连接器)正确处理大 blob

asp.net - 如何阻止基本页面递归检测 session 超时

c# - 带有 API 网关的微服务

PHP-laravel : How to handle time overlapping in database?

.net - 优化 LINQ to SQL 查询的工具和技术

php - MySQL DATE_ADD - 日期错误?

c# - Mono无法打开sqlite数据库

c# - WPF 图像源不更新图像