从 Java 应用程序调用时,Oracle PL/SQL 包错误(ORA-04063 和 ORA-06508)

Posted

技术标签:

【中文标题】从 Java 应用程序调用时,Oracle PL/SQL 包错误(ORA-04063 和 ORA-06508)【英文标题】:Oracle PL/SQL package errors (ORA-04063 and ORA-06508) when called from a java application 【发布时间】:2019-03-15 00:47:00 【问题描述】:

当我运行我的应用程序并调用 PL/SQL 包时,我收到错误:

ORA-04063:包体“SEARCH_TRAILER”有 错误 ORA-06508: PL/SQL: 找不到被调用的程序单元: "SEARCH_TRAILER" ORA-06512: 在第 1 行

我更换了包体和包规范并成功重新编译,但仍然出现错误。在此存储过程中还调用了其他存储过程。但是,如果只有那些存储过程,错误不会调用该存储过程而不是应用程序调用的那个存储过程吗? 我需要查看什么来解决此错误吗?

【问题讨论】:

看起来包“SEARCH_TRAILER”有错误。你确定header和body编译成功了吗? 在 Pl/Sql 中重新编译后,有时需要退出并启动新会话以摆脱 6508 错误。这是一个令人讨厌的行为,但它就是这样。 【参考方案1】:

您需要查找编译错误。如果您使用的是像 SQL Developer 这样的 IDE,那么会有一个选项卡。如果您使用的是 SQL*Plus,您应该使用show errors 命令得到错误。

在任何环境中你都可以运行这个:

 select * from user_errors
 where name = 'SEARCH_TRAILER'

(假设您以包所有者的身份连接,否则使用 ALL_ERRORS)。

【讨论】:

以上是关于从 Java 应用程序调用时,Oracle PL/SQL 包错误(ORA-04063 和 ORA-06508)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用参数从 Oracle PL/SQL 执行 Java jar 文件?

使用带有布尔输入参数的 PL/SQL 在 oracle 中调用 java 存储过程

从 0jdbc6 JDBCthin 驱动程序调用具有自定义对象返回类型的 Oracle PL/SQL 过程

将 oracle.sql.ARRAY 传递给 PL/SQL 过程时设置时区

从 Java 调用 PL/SQL Web Toolkit 过程

oracle SQL语句中怎么样调用存储过程