0
我如何通过XML文档从Java到CallableStatement
传递XML到Oracle程序的Java(ojdbc)
代码,我准备XML文档:
DocumentBuilderFactory dbFactory =
DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder =
dbFactory.newDocumentBuilder();
Document doc = dBuilder.newDocument();
// root element
org.w3c.dom.Element rootElement = doc.createElement("data");
doc.appendChild(rootElement);
org.w3c.dom.Element object_id = doc.createElement("object_id");
rootElement.appendChild(object_id);
object_id.appendChild(createElement(doc, "attribuName1", "value1"));
object_id.appendChild(createElement(doc, "attribuName2", "value2"));
XML结构:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<data>
<object_id>
<field name="name2" value="2"/>
<field name="name1" value="1"/>
</object_id>
</data>
现在我创建CallableStatement
来调用过程并传递一些值以及我想在这里传递XML文档。
CallableStatement cstmt = conn.prepareCall("{? = CALL SCHEMA.PROC_DATA_XML(?,?,?)}");
cstmt.setString(1, "StringParam1");
cstmt.setInt(2, 9999);
//!this is where i want to pass that XML document. So how should i do this? I tried this one:
cstmt.setObject(3, doc);
cstmt.registerOutParameter(1, Types.INTEGER);
cstmt.executeUpdate();
float result = cstmt.getInt(1);
程序代码:
CREATE OR REPLACE PROCEDURE PROC_DATA_XML(
ID IN SCHEMA.XML.ID%TYPE ,--varchar(4)
ID2 IN SCHEMA.XML.ID2%TYPE ,--number(4)
RESULT OUT SCHEMA.XML.RESULT%TYPE, -- 0 – OK 1 – NOT OK
XML_DATA IN SCHEMA.XML.DATA_CONTENT%TYPE --XML File
) IS
BEGIN
也许有人可以给我提供的是如何做到这一点在Java另一种方式?
请在问题'SCHEMA.XML'结构中显示。 – Seyran
@Seyran我加了 – arccuks
如果我在你那里,我会通过最后一个参数作为CLOB。 – Seyran