Spring SimpleJdbcCall如何在存储过程调用中为oracle STRUCT指定模式

时间:2014-01-23 20:08:48

标签: java database spring oracle

我试图调用默认架构下不存在的存储过程。该过程将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 !!!

0 个答案:

没有答案