【发布时间】:2016-10-09 17:52:21
【问题描述】:
我有一个 spring 应用程序,它需要执行一个带有 XML IN 参数的存储过程。存储过程声明如下:
private class InsertXMLDataProcedure extends StoredProcedure {
public InsertXMLDataProcedure(DataSource ds) {
super(ds, PROCEDURE_NAME);
declareParameter(new SqlParameter("COMPANYNO", Types.INTEGER));
declareParameter(new SqlParameter("XMLDATA", Types.SQLXML));
declareParameter(new SqlParameter("ERRORNO", Types.INTEGER));
declareParameter(new SqlParameter("ERRORDESC", Types.VARCHAR));
compile();
}
public Map<String, Object> execute(int companyNumber, String xmlData, int errorNumber, String errorDescription) {
return super.execute(companyNumber, xmlData, errorNumber, errorDescription);
}
}
但是,XML 输入并未插入到表中。显然,Oracle 需要供应商特定的配置设置来识别输入。
【问题讨论】:
-
使用 setSql 作为过程名称。
-
super(ds, PROCEDURE_NAME) 引用受保护的 StoredProcedure(DataSource ds, String name) { setDataSource(ds); setSql(名称); } 在超类中,即涵盖了
-
您可以将 Types.STRUCT 用于 xml 数据 Erik