вставить BLOB через odp.net через ограничения размера dblink - PullRequest
0 голосов
/ 14 апреля 2011

я использую ODP.NET (версия 2.111.7.0) и объекты C #, OracleCommand & OracleParameter и метод OracleCommand.ExecuteNonQuery

Мне было интересно, есть ли способ вставить массив больших байтов в оракулатаблица, которая находится в другой базе данных, через ссылку на БД.я знаю, что обработка lob через ссылки на БД в целом проблематична, но я немного колеблюсь, чтобы изменить код и добавить другое соединение.

создаст хранимую процедуру, которая принимает blob в качестве параметра и общается внутри через dblink, делает любойразница?я так не думаю ..

моя текущая ситуация такова, что Oracle выдаст мне «ORA-22992: невозможно использовать локаторы больших объектов, выбранные из удаленных таблиц» всякий раз, когда параметр, который я передаю с помощью OracleCommand, является байтовым массивом с длиной0 или длиной> 32 КБ (подозреваю, потому что 20 КБ работало, 35 КБ - нет)

Я использую OracleDbType.Blob для этого параметра.

спасибо.

есть идеи?

1 Ответ

0 голосов
/ 27 апреля 2011

В итоге я использовал второе соединение, синхронизировав две транзакции, чтобы коммиты и откаты всегда выполнялись совместно.я также закончил тем, что фактически поверил, что есть общая проблема с обработкой BLOB через dblink, поэтому второе соединение было лучшим выбором, хотя в моем случае дизайн моего приложения был слегка нарушен - нужно было ввести и второе соединение, и второесделка.Другой вариант состоял в том, чтобы попытаться вставить большой двоичный объект кусками по 32 Кб, используя блоки PL / SQL и некоторую форму DBMS_LOB.WRITEAPPEND, но это потребовало бы более глубоких изменений в моем коде (в моем случае), поэтому я выбрал более простой иболее простое первое решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...