gpt4 book ai didi

Java:从 StoredProcedure 返回 XMLType 数据,使用 ojdbc6.jar xdb6.jar xmlparserv2.jar 进行 Java 到 PLSQL 交互

转载 作者:搜寻专家 更新时间:2023-11-01 03:59:52 26 4
gpt4 key购买 nike

我按照下面的教程从存储过程中检索 XMLType 数据

http://docs.oracle.com/cd/B19306_01/appdev.102/b14259/xdb11jav.htm#g1039140示例 13-4 XMLType Java:返回 XMLType 数据

当我运行代码时,我得到了这个错误

Exception in thread "main" java.lang.NoClassDefFoundError: oracle/xml/parser/v2/XMLParseException
at oracle.xdb.XMLTypeFactory.create(XMLTypeFactory.java:67)
at oracle.sql.OPAQUE.toClass(OPAQUE.java:328)
at oracle.sql.OPAQUE.toJdbc(OPAQUE.java:278)
at oracle.sql.OPAQUE.toJdbc(OPAQUE.java:259)
at oracle.jdbc.driver.NamedTypeAccessor.getObject(NamedTypeAccessor.java:190)
at oracle.jdbc.driver.NamedTypeAccessor.getObject(NamedTypeAccessor.java:117)
at oracle.jdbc.driver.OracleCallableStatement.getObject(OracleCallableStatement.java:1579)
at oracle.jdbc.driver.OracleCallableStatementWrapper.getObject(OracleCallableStatementWrapper.java:815)
at com.example.TestXMLDAO.main(TestXMLDAO.java:48)
Caused by: java.lang.ClassNotFoundException: oracle.xml.parser.v2.XMLParseException
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 9 more

Java 代码片段:

import java.io.IOException;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import oracle.jdbc.OracleTypes;
import oracle.xdb.XMLType;

................

            // Prepare to call the stored procedure get_group_details.

String sql = "{call mypackage.get_records(?,?,?,?,?,?,?,?)}";

callableStatement = conn.prepareCall(sql);

callableStatement.setString(1, "");
callableStatement.setString(2, "");
callableStatement.setString(3, "");
callableStatement.setString(4, "");
callableStatement.setString(5, "abb%");
callableStatement.setString(6, "F");
callableStatement.setString(7, "F");
callableStatement.registerOutParameter(8, OracleTypes.OPAQUE,
"SYS.XMLTYPE");

// execute get_group_details
// callableStatement.executeQuery();

callableStatement.executeQuery();

callableStatement.getObject(8);

// get cursor and cast it to ResultSet
xml = (XMLType) callableStatement.getObject(8);

System.out.println(xml.getStringVal());

} catch (Exception ex) {
ex.printStackTrace();
} finally {
// Close the statement
callableStatement.close();
// Close the connection
conn.close();
}

PLSQL 程序片段

PROCEDURE get_records
(
grp1 IN a.name%TYPE DEFAULT NULL
,grp2 IN a.name%TYPE DEFAULT NULL
,grp3 IN a.name%TYPE DEFAULT NULL
,grp4 IN a.name%TYPE DEFAULT NULL
,grp5 IN a.name%TYPE DEFAULT NULL
,flag1 IN a.flag%TYPE DEFAULT 'F'
,flag2 IN a.flag%TYPE DEFAULT 'F'
,xml_type_out OUT xmltype
);

包含的 jar :ojdbc6.jar、xdb.jar

知道我错过了什么吗?

此问题已解决。但是当部署在JBoss服务器时,另一个问题- 如果您有任何想法,请引用这里- Xmlparserv2 error while application deployed in jboss, Installing Oracle ojdbc module in JBoss for Java web application

最佳答案

通过添加所需的 jars 解决了问题

类路径中需要以下三个 jar,[我还有这些 jar,由于 jar 的版本错误,我遇到了错误]

ojdbc6.jar、xdb6.jar、xmlparserv2-11.1.1.jar

即使您有这些 jar,您也可能会遇到错误,就像我在包含错误版本的 xmlparserv2.jar 时遇到的那样。

因此,需要注意的重要事项是这些 jar 的版本和兼容性。

对我有用的 [我的 Oracle 数据库版本:11.2.0.4.0]

ojdbc6.jar; xdb6.jar:

http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090769.html

xmlparserv2-11.1.1.jar 可在此处获取:( SQL Developer )(在 sqldeveloper\modules\oracle.xdk_12.1.2 中)

[按照@Lukas Eder 的建议删除了第三方引用链接,谢谢]

关于Java:从 StoredProcedure 返回 XMLType 数据,使用 ojdbc6.jar xdb6.jar xmlparserv2.jar 进行 Java 到 PLSQL 交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25208239/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com