2015-11-03 121 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); 

两条线有属性号

相关问题