0

ODP.NET(バージョン2.111.7.0)とC#、OracleCommand&OracleParameterオブジェクト、およびOracleCommand.ExecuteNonQueryメソッドを使用しています

DBリンクを介して、別のデータベースにあるOracleテーブルに大きなバイト配列を挿入する方法があるかどうか疑問に思いました。DBリンクを介したLOB処理は一般に問題があることは知っていますが、コードを変更して別の接続を追加することを少し躊躇しています。

blobをパラメーターとして受け取り、dblinkを介して内部で通信するストアドプロシージャを作成すると、違いはありますか?そうは思わないでください。

私の現在の状況では、OracleCommandで渡すパラメータが長さ0または32KBを超えるバイト配列である場合は常に「ORA-22992:リモートテーブルから選択されたLOBロケータを使用できません」と表示されます(おそらく20KBであるため)動作しましたが、35KBは動作しませんでした)

このパラメータにはOracleDbType.Blobを使用しています。

ありがとうございました。

何か案は?

4

1 に答える 1

0

コミットとロールバックが常に共同で実行されるように、2つのトランザクションを同期して2番目の接続を使用することになりました。また、dblinkを介したBLOBの処理には一般的な問題があると実際に信じていたため、2番目の接続の方が適切でしたが、私の場合、アプリケーションの設計が少し中断されました-2番目の接続と2番目の接続の両方を導入する必要がありました取引。他のオプションは、PL / SQLブロックと何らかの形式のDBMS_LOB.WRITEAPPENDを使用して、ブロブを32kのチャンクに挿入しようとすることでしたが、これにはコードのより深い変更が必要になるため(私の場合)、より簡単でより簡単な最初のソリューション。

于 2011-04-27T08:16:23.470 に答える