Java 捕获JDBC中的PL/SQL错误

Java 捕获JDBC中的PL/SQL错误,java,oracle,jdbc,plsql,oracle11g,Java,Oracle,Jdbc,Plsql,Oracle11g,我正在创建一个Java应用程序,它通过JDBC连接到oracle数据库,并且能够在中执行脚本。有点像蟾蜍。 我之所以创建它,是因为我们不能在封闭的工作空间中使用Toad或SQLplus 在我谈到程序、函数、触发器、包之前,一切都很好,。。。(要说的最重要的事情) 我可以通过JDBC驱动程序发送它们,但它总是说它成功了,即使它没有成功。 在SQLplus中,您会收到一条消息,上面写着“。。。。创建时有编译错误,所以实际上它也不是真正的错误。但是你可以显示错误 有没有一种方法可以通过JDBC访问通过

我正在创建一个Java应用程序,它通过JDBC连接到oracle数据库,并且能够在中执行脚本。有点像蟾蜍。 我之所以创建它,是因为我们不能在封闭的工作空间中使用Toad或SQLplus

在我谈到程序、函数、触发器、包之前,一切都很好,。。。(要说的最重要的事情)

我可以通过JDBC驱动程序发送它们,但它总是说它成功了,即使它没有成功。 在SQLplus中,您会收到一条消息,上面写着“。。。。创建时有编译错误,所以实际上它也不是真正的错误。但是你可以显示错误


有没有一种方法可以通过JDBC访问通过
show errors
得到的错误?因此,我现在至少发生了一个错误。

您可以使用系统视图
所有错误

例如:

select * 
from ALL_ERRORS  
where owner = 'your_schema' 
and name = 'your_package_name' 
and type = 'PACKAGE BODY' 
order by sequence

你检查了和的警告了吗?@MarkrotVeel我刚刚检查了,现在我得到了:“警告:执行已完成,警告”但我仍然没有得到实际的错误。按照Javadoc中的说明:你需要使用或使用一个基于开源JDBC的SQL工具来“遍历”异常,而不是重新发明轮子?如果“封闭的工作空间”是因为对该工具的担忧,您可以检查它们的源代码,以确保所有内容都符合您的环境。这是一个很好的评论,对我很有帮助。我发现Flyway解决了同样的问题,并且能够实现类似的解决方案。这就成功了谢谢!您不知道我如何找到最后一个修改过的对象?@Sonaryr-可能,
select*从所有对象中,其中owner='your_schema'和object_键入('PACKAGE','PACKAGE BODY')按上次ddl_time desc的顺序