2012-05-04 7 views
5

TABLE型のOracleデータ型としてINパラメータを指定する方法はありますか? stackoverflowの上でこの前の質問に基づいて

Fetch Oracle table type from stored procedure using JDBC

は、答えは私たちにオラクルのgetArrayとjava.sql.Datumを使用してOUTパラメータのサンプルを与えました。しかし、データ型がOracle TABLE型のINパラメータを指定したいのですが?

CREATE OR REPLACE TYPE XXINV.XX_PROD_SRCH_RSLT_REC_TYPE IS OBJECT(

item_no     VARCHAR2(30), 
inventory_item_id   NUMBER, 
organization_id   NUMBER, 
item_description   VARCHAR2(240), 
item_long_description  VARCHAR2(240), 
cat_description   VARCHAR2(240), 
category_set_name   VARCHAR2(240), 
nla_flag     VARCHAR2(1), 
CONSTRUCTOR FUNCTION XX_PROD_SRCH_RSLT_REC_TYPE RETURN SELF AS RESULT , 
MEMBER PROCEDURE log_prod_srch_rslt_rec_values (SELF IN XX_PROD_SRCH_RSLT_REC_TYPE)) 

CREATE OR REPLACE TYPE xxinv.XX_PROD_SRCH_RSLT_TAB_TYPE AS TABLE OF XX_PROD_SRCH_RSLT_REC_TYPE; 

そして、私のSPはこれです:XX_PROD_ATTR_TAB_TYPEはINパラメータとしてテーブルをあるよう

XX_PART_RESEARCH_PKG .GET_PARTS 
    (p_called_from   IN  VARCHAR2, 
    p_item_id    IN  NUMBER, 
    p_category_id   IN  NUMBER, 
    p_mnfg_part_id   IN  NUMBER, 
    p_item_desc   IN  VARCHAR2, 
    p_include_NLA_items IN  VARCHAR2, 
    p_catl_group_id  IN  NUMBER, 
    p_catl_attributes  IN  XX_PROD_ATTR_TAB_TYPE, 
    x_srch_rslt   IN XX_PROD_SRCH_RSLT_TAB_TYPE, 
    x_return_status  OUT VARCHAR2, 
    x_returb_msg   OUT VARCHAR2 
    ) 

これをJavaで指定する方法は?私はOracle 10gリリース2を使用しています。

答えて

3

あなたのタイプにはコンストラクタが定義されているので、これが正確に動作するかどうかはわかりませんが、私のブログでこれを行う方法のサンプルを投稿しました。

http://betteratoracle.com/posts/31-passing-record-types-between-oracle-and-java

をし、それは、JavaからのOracleにレコードの配列を渡すように拡張:まず、どのように、JavaからのOracleにレコードタイプを渡すために、レコードの

http://betteratoracle.com/posts/32-passing-arrays-of-record-types-between-oracle-and-java

+0

通過している配列に等しいですレコードのテーブルに?詳しく教えてください。 –

+1

はい、「my_typeはXのテーブルです」と定義された型を持つ場合、実質的に配列になります。表(または配列)またはレコードを渡すには、Javaで配列を作成してOracleの内部型にキャストします。 –

+0

ああ、そうだよ!ありがとう! –

関連する問題