2

.NET (c#) アプリケーションと Oracle データベースの間でバルク データを渡す必要があります。これまでのところ、連想配列とユーザー定義データ型 (UDT) のテーブルという 2 つの代替案が提示されています。

これまでのところ、非常にうまく機能する UDT テーブルの例を設定しました。一括データの各項目行に対して挿入呼び出しを行うよりもはるかに優れたパフォーマンスを発揮し、そのままにしておきたいと思いますが、Associate Arrays を考慮しないのは気が進まないでしょう。

同僚から、連想配列は Oracle の PL/SQL コード内でのみ認識される言語構造であり、純粋な SQL では認識されないと言われました。Oracle 開発者は可能な限りセットベースの SQL を作成することが推奨されているため、UDT テーブルを選択するのは自然な選択であると思われました。

ただし、バルク データを交換するこれら 2 つの方法の相対的な長所と短所をもっと知りたいので、より多くの情報に基づいた (そして正当な) 決定を今後行うことができます。

あなたの助けをいただければ幸いです。

どうもありがとう

4

1 に答える 1

2

オラクル側から、AskTom のこの質問に基づいて:

主な違い:

(テーブルによるインデックス)[= 連想配列] および (ネストされたテーブル/VARRAY)

テーブルによるインデックスは PLSQL でのみ使用でき、ネストされたテーブル/VARRAY は PLSQLSQL の両方で使用できます。

テーブルによるインデックスはもう少し柔軟性があり、パフォーマンスのわずかな向上が期待できますが、大幅な改善になる可能性は低いです。配列をコンテナーとして使用してデータを Oracle に渡すだけの場合、違いは無視できるほど小さく、測定できない場合があります。

SQL から関数を使用する場合は、ネストされたテーブルを使用する必要があります。

于 2011-01-05T15:42:49.973 に答える