私は、Oracle 10gのPL/SQLの関数として、このJavaメソッド場合と同等を作成したいと思います:どのようにOracle PL/SQL関数にマップを渡すか?
String myMethod(int par1, Map<String, Object> par2);
はそれは、Oracle PL/SQL関数にマップ(またはいくつかのsimillar構造)を渡すことは可能ですか? Javaからこの関数を何とか呼び出せなければなりません。
私は、Oracle 10gのPL/SQLの関数として、このJavaメソッド場合と同等を作成したいと思います:どのようにOracle PL/SQL関数にマップを渡すか?
String myMethod(int par1, Map<String, Object> par2);
はそれは、Oracle PL/SQL関数にマップ(またはいくつかのsimillar構造)を渡すことは可能ですか? Javaからこの関数を何とか呼び出せなければなりません。
JavaオブジェクトをOracleに渡す方法については、interesting discussion on AskTomがあります。特にIMO、この優れたadvice from Tom Kyteで:
私、私はコミット削除行にグローバル一時表のGTT( FNAMEのVARCHAR2(20)、LNAMEのVARCHAR2(20) )を作成
を日科技連でしょう。
をjava app BATCHに挿入し、プロシージャを呼び出すと、 プロシージャはそのテーブル のデータを入力として使用します。
こと、私の経験では、「私」の間のコードの少なくとも 量であり、
を「 が終了している」、すなわち:ただのjavaでそれに書き込む、リレーショナル一時テーブルのセットを使用し、 pl/sqlをテーブルから読み込ませます。おそらくオブジェクトを渡すほど効率的ですが、実装とデバッグが容易になります。複雑なオブジェクトのための基本的
Down this pathは恐怖と絶望です。見たことあります。
これは大きな誇張です。私はPL/SQLとJavaオブジェクトの間のJPublisher変換を扱っています。これまで使用していない開発者がピックアップするのは簡単です。 –
+1用: – Seki
読むthis article on JDBC interface for Oracle collections first
自動的にJavaクラスと定型的なコードを生成するためにJPublisherを使用する必要があります。それ以外の場合は、単純なoracle.sql.ARRAYを実行する必要があります。
一致するPL/SQLオブジェクトも作成する必要があります。this articleを参照してください。 JavaとOracleの間でデータを渡すだけのMEMBERメソッドを実装する必要はありません。
編集1:残念ながら、PL/SQLにはJavaのようなMapコンセプトはありません。ただし、マップを特殊な(Key、Value)オブジェクトとして、または単純なクラス(ハッシュマップのような並べ替え)のIndex-byテーブルとしてモデル化できます。
私が正しく理解していれば、これは要素のコレクションを関数に渡す方法です。私が必要とするのは地図を渡すことです。私は、このマップのキーまたはエントリの数を知らない。このようにすることができますか? –
テンポラリテーブルは私が入力したものだけです/ +:あなたはそれを打ちました。 組み込み関数を使用してそれを行う退屈な方法もあります。 – Everyone