我试图调用默认架构下不存在的存储过程。该过程将oracle STRUCT作为参数。过程和oracle STRUCT都位于相同的模式下:OTHERSCHEMA
这是我的代码:
SimpleJdbcCall createMyCall = new SimpleJdbcCall(dataSource)
.withSchemaName("OTHERSCHEMA")
.withProcedureName("PROC_THEPROC")
.declareParameters(new SqlParameter("Param_in", OracleTypes.STRUCT, "OTHERSCHEMA.MYTYPE"),
new SqlOutParameter(Param_out, OracleTypes.NUMBER),
new SqlOutParameter(ErrorCode_out, OracleTypes.NUMBER));
Map in = Collections.singletonMap("Data_in", myData);
createMyCall.execute(in);
当我执行此代码时,我收到错误:
org.springframework.jdbc.UncategorizedSQLException: CallableStatementCallback;
uncategorized SQLException for SQL [{call OTHERSCHEMA.PROC_THEPROC(?, ?, ?)}]; SQL state
[99999]; error code [17074]; invalid name pattern: MYSCHEMA.MYTYPE; nested exception is
java.sql.SQLException: invalid name pattern: MYSCHEMA.MYTYPE
为什么OTHERSCHEMA.MYTYPE被我的默认架构MYSCHEMA取代?一些见解将不胜感激。
更新: 我解决了我的问题。 “myData”有一个getSQLTypeName()方法,它返回MYSCHEMA.MYTYPE。显然,这将总是 覆盖我传递给SimpleJdbcCall的内容。 DOH !!!