Wendelius Ответов: 0

Как получить данные обратно с сервера oracle с помощью oraclebulkcopy


Я пытаюсь выяснить, могу ли я получить данные обратно с сервера для строк, вставленных с помощью Класс OracleBulkCopy[^]

Я могу успешно загрузить данные с клиента на сервер, но проблема в том, что я не могу определить сопоставление, которое возвращало бы данные обратно клиенту с сервера.

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

Что я уже пробовал:

Чтение документации и поиск в гугле.

Afzaal Ahmad Zeeshan

Если вы знаете, сколько было вставлено, можете ли вы сделать то же самое? SELECT TOP n ... ORDER BY pk DESC- А это работает?

Wendelius

Спасибо за предложение, но я боюсь, что это не сработает. Нет никакого способа управлять параллельными операциями, чтобы верхний запрос мог возвращать строки, вставленные другим одновременным соединением.

Afzaal Ahmad Zeeshan

Продолжая от комментариев, верно, я попытался выяснить это, но понял, что функции WriteToServer возвращают void. Плохо написанный API.

https://docs.oracle.com/cd/E17666_01/doc/win.112/e17357/OracleBulkCopyClass.htm#CHDHHABB
%Количество строк и тоже не работает. Главным фактором является этот параллелизм в этом. Я бы предложил убрать один фактор-рассмотреть семафоры, замки и т. д. В противном случае это немного сложная проблема.

Wendelius

Параллелизм всегда присутствует в базах данных, вы никогда не знаете, кто связан и что делает, поэтому нам просто нужно жить с этим :)

Я могу обойти эту проблему, используя другие подходы, но мне просто интересно, может ли это требование быть удовлетворено массовым копированием.

Afzaal Ahmad Zeeshan

Действительно, что можно свести к минимуму с помощью семафоров. ;-)

Mehdi Gholam

Как насчет вставки в" временную таблицу " и перемещения данных, когда все в порядке?

Wendelius

Как бы я вернул сгенерированные ключи обратно на клиентскую сторону для каждой строки?

Mehdi Gholam

Как насчет добавления столбца типа " массовая партия нет"

Wendelius

Да, я думал об этом, и это может быть решением. Не совсем сопоставимо с другими технологиями, где каждая вставленная строка может быть связана с объектом со стороны клиента, но с небольшой настройкой это может сработать...

Действительно кажется, что нет никакого способа получить данные обратно и что нет никакой гарантии для порядка вставки. Так называя массовое копирование-это просто одностороннее движение в этом смысле. Забавный.

0 Ответов