2016-04-21 5 views
0

Я создал хранимую процедуру с массивом типа ROW в качестве входного параметра и возможность вызвать его с помощью JDBC (Java 1.6) код находится нижеИспользование SimpleJdbcCall с массивом в качестве входного параметра (DB2)

//Create Array Product List 
Struct[] productList = new Struct[1]; 
Object[] customObject = new Object[]{"Fruits"}; 
productList[0] = con.createStruct("ProductRow", customObject); 

// Create product Response List 
Struct[] responseList = new Struct[1]; 
customObject = new Object[]{new Integer(1), new Integer(2)}; 
responseList[0] = con.createStruct("ResponseRow", customObject); 

Array products = con.createArrayOf("ProductRow", productList); 
Array responses = con.createArrayOf("ResponseRow", responseList);  


// Prepare the call statement 
CallableStatement callStmt = con.prepareCall("CALL SP_create(?, ?)"); 

// Set IN parameters 
callStmt.setArray(1, products); 
callStmt.setArray(2, responses); 

// Call the procedure 
callStmt.execute(); 

Любые Идея, как сделать то же самое с SimpleJdbcCall? Я использую Spring 2.5 и DB2 9.7 версии

ответ

0

Я понял, наконец. Я вставляю образец кода для него.

Map<String, Object> in = new HashMap<String, Object>(); 
     in.put("products", new AbstractSqlTypeValue() { 
      @Override 
      protected Object createTypeValue(Connection con, int type, String typeName) throws SQLException { 
       Struct[] productList = new Struct[1]; 
       Object[] customObject = new Object[]{"Vegetables"}; 
       productList[0] = con.createStruct("ProductRow", customObject); 

       Array products = con.createArrayOf("ProductRow", productList); 
       return products; 
      } 
     }); 
+0

Я делаю это именно так, но получаю исключение: 'Вызванный: com.ibm.db2.jcc.am.SqlFeatureNotSupportedException: [СТК] [t4] [10181] [12052] [4.11. 77] Метод createStruct не поддерживается. ERRORCODE = -4450, SQLSTATE = 0A504' Я использую Spring версии 4.2.2 и DB2 версии 9.7.3. – abhishek

Смежные вопросы