2012-04-25 2 views
1

レコード型とPL/SQLパッケージで定義されたプロシージャ(INパラメータとしてレコードの表を受け取ります) Javaコード内でこのプロシージャをコールするにはどうすればよいですか?Java呼び出しPL/SQLプロシージャでレコード表を使用

このタイプのINパラメータを避ける方が良いでしょうか? REF CURSOR?

答えて

2

通常のテーブルは一時テーブルを使用しています。

0 nessesary場合はオフに自動コミットを設定し(これはデフォルトではオフです)

1いくつかの値whith一時テーブルを埋めます。

2プロシージャを呼び出します。テンポラリテーブルから値を読み込みます。 (INパラメータにレコード)

3は

//A function to put a value in temporary table 
public void addValueToTmp(Connection conn, String value) throws NamingException, SQLException { 
    CallableStatement cs = conn.prepareCall("{call plsql_function_put_value_in_tmp(?)}"); 
    ....... other code ....... 
    ....... other code ....... 
    ....... other code ....... 
} 

//A function to do something whit a data in temporary table 
public void doAllWork(Connection conn) throws NamingException, SQLException { 
    CallableStatement cs = conn.prepareCall("{call plsql_function_do_something_whith_tmp}"); 
    ....... other code ....... 
    ....... other code ....... 
    ....... other code ....... 
} 


public void mainFunction() throws NamingException, SQLException { 
    ....... other code ....... 
    //Get connection 
    Connection conn = anyFunctionToGetConnection(); 
    //Fill temporary table 
    addValueToTmp(conn, value1); 
    addValueToTmp(conn, value2); 
    addValueToTmp(conn, value3); 
    //Do something whith data 
    doAllWork(conn); 
    //Commit 
    conn.commit; 
    ....... other code ....... 
} 
+0

をコミットしていない私はそれを得た...しかし、それは少し時間がかかりますです。 – Samson

+0

私はCLOBを使用してXMLを解析する必要があります。(あなたはそれについてどう思いますか? – Samson

関連する問題