`
raoliv
  • 浏览: 9420 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

XMLTYPE 插入超过4000的字符串

 
阅读更多
引用; http://steveracanovic.blogspot.com/2011/01/inserting-large-xmltype.html

When inserting large XMLTYPE, I am left with the following error:


java.sql.SQLException: ORA-01461: can bind a LONG value only for insert into a LONG column  at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:113) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288) at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:754) at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:219) at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:972) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1192) at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3415) at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3460) at InsertXML.insertXMLType(InsertXML.java:47) at InsertXML.main(InsertXML.java:93)
I found 2 ways to get around this problem.

1. XMLType are opaque types, so I should be using oracle.xdb.XMLType. So my code should look something like:

XMLType xml; byte[] byteBuffer = xmlDetails.toString().getBytes(); InputStream is = new ByteArrayInputStream(byteBuffer); xml = XMLType.createXML(connection,is);  pstmt.setObject(1,xml);

2. In Oracle JDBC 11.2.0.2. (Not implemented in 11.2.0.1) and using JDK 1.6 (utilising JDBC 4.0) we can use SQLXML Type - java.sql.SQLXML

http://download.oracle.com/docs/cd/E11882_01/java.112/e16548/jdbcvers.htm#BABGHBCC

So the code should look something like:

SQLXML x = conn.createSQLXML(); x.setString(xmlDetails.toString()); pstmt.setSQLXML(1, x);

The second option here is preferred and moving forward.
分享到:
评论

相关推荐

    java中xml文件的处理及oracle中xmltype的插入和读取.pdf

    Java 中 XML 文件的处理及 Oracle 中 XMLType 的插入和读取 Java 中 XML 文件的处理是指在 Java 应用程序中处理和操作 XML 文件的过程。在 Oracle 数据库中,XMLType 是一种特殊的数据类型,用于存储和处理 XML ...

    Java使用JDBC或MyBatis框架向Oracle中插入XMLType数据

    这是最直观的方式,将XML数据作为字符串传递给SQL语句,让数据库负责创建XMLType。例如: ```java String sql = "insert into xmltable (XML) values(sys.xmlType.createXML(?))"; String xmldata = "<label>...

    oracle XML

    它接受四个参数:XMLType实例(目标XML),XPath表达式(指定插入位置),值表达式(新节点的值),以及命名空间字符串。例如,更新warehouses表中的warehouse_spec列,向'Warehouse/Building'节点下添加一个新的'...

    Oracle XML数据库实验

    插入XML数据到Oracle数据库中,通常涉及将XML字符串转化为XMLType对象并将其插入到表中。例如,可以使用INSERT语句配合XMLType构造函数完成这一过程: ```sql INSERT INTO table_name (xml_column) VALUES (XMLType...

    Beginning XML Databases_AppB_Oracle.zip

    这些示例可能涵盖了不同类型的XML数据插入,如直接插入XML字符串、使用XMLType对象或者通过XML文档路径语言(XPath)进行插入。这样的练习对于理解XML数据如何与关系数据交互非常有帮助。 createUser.sql文件通常...

    数据库与xml的导入导出

    另外,T-SQL也支持直接的XML类型列,可以直接将XML字符串插入到XML类型的字段。 二、Oracle中的XML导入导出 1. 导出XML:Oracle提供`DBMS_XMLGEN`包,通过调用其`getXML`函数可以生成XML。此外,还可以利用`SELECT...

    Oracle实验总结.docx

    * 将日期转换为字符串可以使用 to_char() 函数,将字符串转换为日期用 to_date() 函数。 四、XML 数据库 * XML 数据库使用的简洁举例如下:建立含 xmltype 数据的表 Create table abc(id number, xmldoc sys....

    Oracle XML DB

    可以使用`XMLTYPE`函数将XML字符串转换为XMLType对象,然后插入到表中。 - **查询XML表信息**:利用XMLTable函数或者XPath查询语言来查询XML数据。Oracle XML DB支持对XML文档的结构化查询,允许你以类似SQL的方式...

    Oracle_XML.rar_oracle

    例如,你可以先使用SQL查询获取数据,然后通过XMLGen生成XML字符串,再利用XSLT进行转换,最后可能还需要XMLTable来解析XML以便进行进一步的分析和处理。通过熟练掌握这些工具和技术,你可以有效地管理和操作Oracle...

    -Oracle Database XML C++ API Reference 11g Release 2 (11.2)-196

    它支持从字符串、文件或输入流加载XML数据,以及将XML数据保存到文件或输出流。此外,XMLDoc还提供了解析和序列化XML文档的功能。 4. **XMLType类**:XMLType类是与数据库交互的核心,它代表了数据库中的XML数据。...

    v512工作室_张利国_Java高端培训系列教材_Oracle实用教程_04章_Oracle数据类型和函数.

    而字符或字符串类型数据则用来记录文字信息。 在Oracle数据库中,数据类型的选择对于表结构的设计至关重要。合理选择数据类型不仅可以节省存储空间,还能提高查询性能。Oracle提供了广泛的数据类型来满足各种应用...

    kettle有关xml的多种写入方式

    - **JavaScript或Groovy**:Kettle支持JavaScript和Groovy等脚本语言,你可以通过编写脚本来动态构建XML字符串,然后将其写入文件。 5. **XML序列化** - **CSV到XML,JSON到XML等**:Kettle提供了将其他数据格式...

    使用oracle存储过程将xml文件数据导入数据库

    这个存储过程接受一个CLOB类型的XML字符串作为参数,通过EXTRACTVALUE函数提取数据,并用INSERT语句将数据插入到`customers`表中。 3. 执行存储过程:现在,你可以调用这个存储过程来导入XML数据。假设有一个名为`...

    C#连接oracle数据库及根据表中数据生成xml

    - 数据导入:将XML文件的数据插入到Oracle表中,可以使用`OracleCommand`执行XMLTable函数或通过PL/SQL的XMLType处理XML数据。 3. **生成XML文件**: - 解析Oracle数据:使用C#的`System.Data.SqlClient`命名空间...

    XML Movement in Oracle

    2. **Activity Six**: 使用`XMLPARSE`函数解析XML字符串,然后将其存储到数据库中。 3. **PL/SQL Solution**: 通过PL/SQL的`UTL_XML`包,可以处理XML的读取、解析和写入操作。 **Activity Seven**: 创建一个PL/...

    oracle更新xml节点问题的一些细节

    在这个更新语句中,我们首先定位到`/data/contact/email`这个路径,然后用新的元素字符串`<email>value</email>`进行替换。这种方式有效地将整个`email`元素替换为了包含新值的新元素。 值得注意的是,`UPDATEXML`...

    Oralce PL-SQL 3rd Edition

    1. **数据类型**:PL/SQL 支持丰富的数据类型,包括数字、字符串以及复杂的数据结构,如记录(类似于关系表中的行)、集合(类似数组)和 XMLType。 - **记录**:用于存储一组相关的值,类似于关系表中的行。 - **...

    Oracle官方文档CHM合集-SQL参考手册

    2. **数据类型**:Oracle支持多种数据类型,如NUMBER(数字)、VARCHAR2(可变长度字符串)、DATE(日期和时间)、CLOB(大对象,字符类型)、BLOB(大对象,二进制类型)等。理解这些数据类型对于正确存储和处理...

    ORACLE中解析XML.pdf

    文章中的PL/SQL存储过程示例展示了如何在Oracle数据库中创建一个过程,该过程接收XML字符串作为输入,然后解析XML数据,以执行某些操作,如插入数据到数据库中。 5. 错误处理:在解析XML或者进行数据库操作时,总是...

Global site tag (gtag.js) - Google Analytics