我试图调用我的默认架构下不存在的存储过程 . 该过程将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的内容 ALWAYS . 卫生署!