引用; 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 的插入和读取 Java 中 XML 文件的处理是指在 Java 应用程序中处理和操作 XML 文件的过程。在 Oracle 数据库中,XMLType 是一种特殊的数据类型,用于存储和处理 XML ...
这是最直观的方式,将XML数据作为字符串传递给SQL语句,让数据库负责创建XMLType。例如: ```java String sql = "insert into xmltable (XML) values(sys.xmlType.createXML(?))"; String xmldata = "<label>...
它接受四个参数:XMLType实例(目标XML),XPath表达式(指定插入位置),值表达式(新节点的值),以及命名空间字符串。例如,更新warehouses表中的warehouse_spec列,向'Warehouse/Building'节点下添加一个新的'...
插入XML数据到Oracle数据库中,通常涉及将XML字符串转化为XMLType对象并将其插入到表中。例如,可以使用INSERT语句配合XMLType构造函数完成这一过程: ```sql INSERT INTO table_name (xml_column) VALUES (XMLType...
这些示例可能涵盖了不同类型的XML数据插入,如直接插入XML字符串、使用XMLType对象或者通过XML文档路径语言(XPath)进行插入。这样的练习对于理解XML数据如何与关系数据交互非常有帮助。 createUser.sql文件通常...
另外,T-SQL也支持直接的XML类型列,可以直接将XML字符串插入到XML类型的字段。 二、Oracle中的XML导入导出 1. 导出XML:Oracle提供`DBMS_XMLGEN`包,通过调用其`getXML`函数可以生成XML。此外,还可以利用`SELECT...
* 将日期转换为字符串可以使用 to_char() 函数,将字符串转换为日期用 to_date() 函数。 四、XML 数据库 * XML 数据库使用的简洁举例如下:建立含 xmltype 数据的表 Create table abc(id number, xmldoc sys....
可以使用`XMLTYPE`函数将XML字符串转换为XMLType对象,然后插入到表中。 - **查询XML表信息**:利用XMLTable函数或者XPath查询语言来查询XML数据。Oracle XML DB支持对XML文档的结构化查询,允许你以类似SQL的方式...
例如,你可以先使用SQL查询获取数据,然后通过XMLGen生成XML字符串,再利用XSLT进行转换,最后可能还需要XMLTable来解析XML以便进行进一步的分析和处理。通过熟练掌握这些工具和技术,你可以有效地管理和操作Oracle...
它支持从字符串、文件或输入流加载XML数据,以及将XML数据保存到文件或输出流。此外,XMLDoc还提供了解析和序列化XML文档的功能。 4. **XMLType类**:XMLType类是与数据库交互的核心,它代表了数据库中的XML数据。...
而字符或字符串类型数据则用来记录文字信息。 在Oracle数据库中,数据类型的选择对于表结构的设计至关重要。合理选择数据类型不仅可以节省存储空间,还能提高查询性能。Oracle提供了广泛的数据类型来满足各种应用...
- **JavaScript或Groovy**:Kettle支持JavaScript和Groovy等脚本语言,你可以通过编写脚本来动态构建XML字符串,然后将其写入文件。 5. **XML序列化** - **CSV到XML,JSON到XML等**:Kettle提供了将其他数据格式...
这个存储过程接受一个CLOB类型的XML字符串作为参数,通过EXTRACTVALUE函数提取数据,并用INSERT语句将数据插入到`customers`表中。 3. 执行存储过程:现在,你可以调用这个存储过程来导入XML数据。假设有一个名为`...
- 数据导入:将XML文件的数据插入到Oracle表中,可以使用`OracleCommand`执行XMLTable函数或通过PL/SQL的XMLType处理XML数据。 3. **生成XML文件**: - 解析Oracle数据:使用C#的`System.Data.SqlClient`命名空间...
2. **Activity Six**: 使用`XMLPARSE`函数解析XML字符串,然后将其存储到数据库中。 3. **PL/SQL Solution**: 通过PL/SQL的`UTL_XML`包,可以处理XML的读取、解析和写入操作。 **Activity Seven**: 创建一个PL/...
在这个更新语句中,我们首先定位到`/data/contact/email`这个路径,然后用新的元素字符串`<email>value</email>`进行替换。这种方式有效地将整个`email`元素替换为了包含新值的新元素。 值得注意的是,`UPDATEXML`...
1. **数据类型**:PL/SQL 支持丰富的数据类型,包括数字、字符串以及复杂的数据结构,如记录(类似于关系表中的行)、集合(类似数组)和 XMLType。 - **记录**:用于存储一组相关的值,类似于关系表中的行。 - **...
2. **数据类型**:Oracle支持多种数据类型,如NUMBER(数字)、VARCHAR2(可变长度字符串)、DATE(日期和时间)、CLOB(大对象,字符类型)、BLOB(大对象,二进制类型)等。理解这些数据类型对于正确存储和处理...
文章中的PL/SQL存储过程示例展示了如何在Oracle数据库中创建一个过程,该过程接收XML字符串作为输入,然后解析XML数据,以执行某些操作,如插入数据到数据库中。 5. 错误处理:在解析XML或者进行数据库操作时,总是...