java - 如何使用类型化参数从 Java callablestatement 调用 Oracle 过程?

标签 java oracle object jdbc procedure

我必须从具有 JDBC Oracle 驱动程序的 Java 应用程序调用 Oracle DB 中的存储过程,其中一些参数是简单类型(VARCHAR2、NUMBER,...),其他参数是对象或对象的事件表。

create or replace 
type t_TYPE as object (In_PARAM VARCHAR2(255)   );

create or replace 
type t_TYPE_array is table of t_TYPE ;

PROCEDURE SOME_PROC (in_myParam IN t_TYPE_array, out_retVal OUT NUMBER) AS ...

我使用的是 Java 1.6 和 ojdbc6,我的方法是 java.sql.CallableStatement,但我愿意接受其他解决方案(在 JDBC 驱动程序之上)。

附注它是一个在 Jboss 5 中运行的企业应用程序(来自数据源的连接)。

谢谢

最佳答案

发现自己:

StructDescriptor structDesc = StructDescriptor.createDescriptor(TYPE_STRUCT, dbConnection);
ArrayDescriptor arrayDesc = ArrayDescriptor.createDescriptor(TYPE_ARRAY, dbConnection);

Object[] objType = new Object[1];
objType[0] = new String("param data");
oracle.sql.STRUCT struct = new oracle.sql.STRUCT(structDesc, dbConnection, objType);

Object[] arrayObj = new Object[size];
arrayObj[0] = struct;
arrayObj[1] = struct1;
[...]
oracle.sql.ARRAY array = new oracle.sql.ARRAY(arrayDesc, dbConnection, arrayObj);

callableStatement = dbConnection.prepareCall(MY_CALL);
[...]
callableStatement.setArray(4, array);

关于java - 如何使用类型化参数从 Java callablestatement 调用 Oracle 过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15130664/

相关文章:

java - 如何从多部分文件中获取文件,以便可以创建PDImageXObject?

GridBagLayout + GridLayout 的 Java 问题

c# - 在 C# 中执行 Oracle 解释计划

sql - Oracle 10g Connect By Prior - 性能问题

Javascript 合并键和值

java - 在 Netbeans Java 应用程序中关闭后保存面板位置

java - 尝试在 OSX 中编译 Maven 插件时 JVM 崩溃

oracle - 如何从有效包中获取 "ORA-00904: : invalid identifier"?

javascript - 键值对未设置(如果未定义),但有默认值

javascript - PHP 中 var_dump 或 print_r 的 JavaScript 等价物是什么?