1

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 ドライバーの上) にも対応しています。

PS Jboss 5 (データソースからの接続) で実行されているエンタープライズ アプリです。

ありがとう

4

2 に答える 2

2

自分自身を見つけました:

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);
于 2013-03-04T09:57:47.283 に答える