Как получить данные обратно с сервера 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
Да, я думал об этом, и это может быть решением. Не совсем сопоставимо с другими технологиями, где каждая вставленная строка может быть связана с объектом со стороны клиента, но с небольшой настройкой это может сработать...
Действительно кажется, что нет никакого способа получить данные обратно и что нет никакой гарантии для порядка вставки. Так называя массовое копирование-это просто одностороннее движение в этом смысле. Забавный.