42884 ошибка при вызове DB2 из Java через SimpleJDBCall - PullRequest
0 голосов
/ 24 сентября 2018

пытается вызвать процедуру DB2 из Java через Spring:

SimpleJdbcCall call = new SimpleJdbcCall(dataSource)
.withSchemaName("schemaName")
.withProcedureName("proc1")
.declareParameters(
new SqlParameter("param2", Types.CHAR),
new SqlOutParameter("output1", Types.CHAR));
MapSqlParameterSource params = new 
MapSqlParameterSource();
params.addValue("param2", "val1");
Map<String, Object> result = call.execute(params);

Что бы я ни делал, я получаю ошибку db2 error 42884, -440.Если я вызываю любую другую процедуру без параметров, она работает нормально.

CallableStatementCallback; bad SQL grammar [{call schemaName. proc1()}]; nested exception is com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-440, SQLSTATE=42884, SQLERRMC=PROCEDURE;XDJA00.LAJA0204, DRIVER=4.19.26

Это похоже на то, что код не принимает параметры ..

Я изменил вызов на java-вызов старой школы:

CallableStatement cs = con.prepareCall("CALL schemaName.proc1(?,?)");
cs.setString(1, "f");
cs.registerOutParameter(2, Types.CHAR);
cs.execute();
System.out.println(cs.getString(2));

Работает отличнохорошо, есть идеи, что может быть не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...