将XML数据类型作为输入从Java传递到DB2存储过程
我对存储过程完全是新手。 得到一个要求,比如要传递给DB2存储过程的输入类型是XML数据类型,并作为ResultSet输出
//存储过程:
CREATE PROCEDURE GetGrpInfo (IN inpdoc XML)
DYNAMIC RESULT SETS 1
P1: BEGIN
Declare tin VARCHAR(9);
Declare max_records INT;
Declare start_index INT;
DECLARE rcount INT;
DECLARE total_count INT;
..........
..........
//Java代码:
private final static String myXML = "inpdoc";
private final static String SpOutput = "RESULT";
@Autowired
public void setDataSource(DataSource db2DataSource) {
String procedureName = "schemaname.GetGrpInfo";
this.db2DataSource = db2DataSource;
this.jdbcCall = new SimpleJdbcCall(this.db2DataSource)
.withProcedureName(procedureName)
.withoutProcedureColumnMetaDataAccess()
.useInParameterNames(myXML)
.declareParameters(new SqlParameter(myXML, Types.SQLXML))
.returningResultSet("GroupInfo", new BeanPropertyRowMapper<GroupInfo>(){
public GroupInfo mapRow(ResultSet rs, int rowNum)
throws SQLException {
GroupInfo gInfo = new GroupInfo();
gInfo.setGroupId(rs.getString("GroupID"));
gInfo.setGroupName(rs.getString("GroupName"));
gInfo.setGroupTaxId(rs.getString("GroupTIN"));
return gInfo;
}
});
}
String input1 = "<Input><TIN>"+tin+"</TIN><MaxRecords>"+max_records+" </MaxRecords><StartIndex>"+start_index+"</StartIndex></Input>";
SqlParameterSource in = new MapSqlParameterSource().addValue(myXML, input1);
Map result = jdbcCall.execute(in);
return (String)result.get("GroupInfo");
不确定returningResultSet的使用是否在这里和类型上都很好。SQLXML。尝试了各种格式,但不确定我的方法是否正确
共 (0) 个答案