首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java:从XMLType返回StoredProcedure数据,使用ojdbc6.jar xdb6.jar xmlparserv2.jar进行StoredProcedure交互

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

Stack Overflow用户
提问于 2014-08-08 16:42:16
回答 3查看 17.6K关注 0票数 4

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

01/appdev.102/b 14259/xdb11jav.htm#g 1039140示例13-4 XMLType Java:返回XMLType数据

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

代码语言:javascript
复制
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代码片段:

代码语言:javascript
复制
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;

.

代码语言:javascript
复制
            // 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过程片段

代码语言:javascript
复制
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
   );

Jars包括: ojdbc6.jar,xdb.jar

知道我错过了什么吗?

这个问题已经解决了。但是当部署到JBoss服务器时,另一个问题--如果您有任何想法,请参考这里- 在jboss中部署应用程序时出现Xmlparserv2错误,在JBoss for Java应用程序中安装Oracle模块

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-08-08 18:37:45

通过添加所需的jars来修正

在类路径中需要下面的三个罐子,我仍然有这些罐子,因为jar的错误版本,我得到了错误

ojdbc6.jar,xdb6.jar,xmlparserv2-11.1.1.jar

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

所以要注意的是这些罐子的版本和兼容性。

适用于我的Oracle DB版本: 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开发人员 )( sqldeveloper\modules\oracle.xdk_12.1.2)

按@Lukas的建议删除第三方参考链接,谢谢

票数 15
EN

Stack Overflow用户

发布于 2015-04-17 15:09:52

在各种甲骨文产品中都有xmlparserv2.jar的发行版,其中SQL开发人员 (在sqldeveloper\modules\oracle.xdk_12.1.2中)。

当然,我不知道是否允许您从中提取jar,从许可证的角度来看。

票数 6
EN

Stack Overflow用户

发布于 2014-08-08 16:57:36

班级

代码语言:javascript
复制
oracle.xml.parser.v2.XMLParseException

在xmlparserv2.jar中

可在http://www.oracle.com/us/downloads/index.html上获得

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25208239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档