在JDBC中调用存储过程时,是否可以将自定义对象表作为OUT参数返回

时间:2011-01-24 13:04:40

标签: oracle jdbc oracle11g spring-jdbc ora-17004

在Oracle 11g中,我有一个这样的存储过程:

PROCEDURE test_params (o_message_tbl OUT core.message_tbl);

其中

create or replace TYPE message_tbl AS TABLE OF core.message_obj;
create or replace TYPE message_obj AS OBJECT
              (code NUMBER (10, 0),
               type_code VARCHAR2 (10 CHAR),
               text VARCHAR2 (1000 CHAR)
              )

我使用Spring的SimpleJdbcCall来调用它,但它给了我“无效的列类型”异常。是否可以调用此类过程并在JDBC中读取结果?如果不是,除了返回游标之外还有哪些其他选项?

1 个答案:

答案 0 :(得分:2)

Spring和SimpleJdbcCall没有做任何花哨的事情,只是让JDBC更容易使用。

这里有一个如何在JDBC中使用TABLE返回类型的示例: http://www.velocityreviews.com/forums/t138431-access-oracle-objects-via-plsql-from-jdbc.html

您应该能够轻松地将其调整为SimpleJdbcCall