2015-11-03 112 views
0

我使用spring jdbctemplate來獲取數據庫數據,並且我想要檢索結果的存儲過程具有輸入和輸出參數。爲什麼registerOutParameter不接受OracleTypes.VARCHAR?

我正在使用CallableStatement在procedureCall中傳遞此參數,但是當我指定一些OracleTypes.VARCHAR時,jdeveloper強調錶達式。

CallableStatementCreator creator = new CallableStatementCreator(){ 
    String sql = "{call procedure(?,?)}"; 
    oracle.jdbc.OracleCallableStatement cs = (oracle.jdbc.OracleCallableStatement)connection.preparecall(sql); 

    cs.setLong(1,10000); 
    cs.registerOutParameter(1,OracleTypes.VARCHAR); 
    return cs; 
} 

return (MyObject)jdbcTemplate.execute(creator,new CallableStatementCallback(){ 
    public Object doInCallableStatement(CallableStatement cs) throws SQLException{ 
    cs.execute(); 

    MyObject myObject = new MyObject(); 
    myObject.setMessage(cs.getString(1)); 
    return myObject; 
    } 
}); 
} 
+1

它應該是oracle.jdbc.OracleTypes.VARCHAR的相同的ID?在這裏看到類似的問題:http://stackoverflow.com/questions/13158212/call-an-oracle-function-from-java – are

回答

0

也許刺在黑暗中,但:

cs.setLong(1,10000); 
cs.registerOutParameter(1,OracleTypes.VARCHAR); 

兩條線有屬性號

相關問題