尝试通过 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));
它工作得很好,知道可能出了什么问题吗?