Hi!
We are using Oracle Database and this function call:
The execute() call throws a org.springframework.jdbc.UncategorizedSQLException :Code:m_translateProc = createFunc("OUR_FUNCTION"); m_translateProc.addDeclaredRowMapper("p_result", new RowMapper<FooResult>() {...}); ... MapSqlParameterSource params; params = new MapSqlParameterSource(); params.addValue("p_aaa", bar); params.addValue("p_bbb", foo); result = m_translateProc.execute(params); //// SimpleJdbcCall createFunc(String procedureName) { SimpleJdbcCall jdbcCall; jdbcCall = new SimpleJdbcCall(m_dataSource).withFunctionName(procedureName); if(m_dataBaseCatalog!=null) { jdbcCall.withCatalogName(m_dataBaseCatalog); } if(m_dataBaseSchema!=null) { jdbcCall.withSchemaName(m_dataBaseSchema); } return jdbcCall; }
CallableStatementCallback; uncategorized SQLException for SQL [{? =
call TEST_FOO.OUR_FUNCTION()}]; SQL state [99999]; error code
[17041]; Missing IN or OUT parameter at index:: 1; nested exception is
java.sql.SQLException: Missing IN or OUT parameter at index:: 1
Any idea why is that happening?
Normally, if a parameter is omitted in Java code, the error is org.springframework.dao.InvalidDataAccessApiUsageE xception: Required input parameter 'P_FOOBAR' is missing
Is it something with the implicit output parameter of the function?
Aha, now I read http://static.springsource.org/sprin...ence/jdbc.html and see they use executeFunction()
Is that it? (it is hard for me to test, as we have a bit of ... distributed environment).
Regards,
David


Reply With Quote