通过SimpleJDBCall从Java调用DB2时出现42884错误

时间:2018-09-24 18:35:51

标签: java db2 simplejdbcinsert

尝试通过Spring从Java调用DB2过程:

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错误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));

它工作得很好,知道什么地方可能出问题了吗?

0 个答案:

没有答案