我有一个类似
的程序PROCEDURE some_proc (cur_in IN req_curtype,
id_out OUT NUMBER,
str_out OUT VARCHAR)
IS
然后它会做一些选择并返回数字和一些字符串。
我试着这样称呼:
SimpleJdbcCall simpleJdbcCall = new SimpleJdbcCall(ds)
.withSchemaName("SCHEMA")
.withCatalogName("PKG")
.withProcedureName("some_proc");
SqlParameterSource in = new MapSqlParameterSource()
.addValue("cur_in", "test");
Map simpleJdbcCallResult = simpleJdbcCall.execute(in);
System.out.println(simpleJdbcCallResult);
我不知道如何传入实际上是REF CURSOR的“req_curtype”。我见过java.sql.CallableStatement和java.sql.Ref,但我不知道如何将它们绑定到任何具体的值。
当我在那里用字符串运行时,我得到一个像
这样的错误Error : 6550, Position : 6, Sql = BEGIN OMR.OMR_PKG.TAKE_N_PROC_REQUEST_CSV(:1 , :2 , :3 ); END;, OriginalSql = {call SCHEMA.PKG.SOME_PROC(?, ?, ?)}, Error Msg = ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'SOME_PROC'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
好像它想要我指定输入,即使是“out”参数。我认为这些将被放在生成的“地图”中,作为它们所包含的任何值的关键。