有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

将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) 个答案