Member 10926063 Ответов: 1

Обновление столбца таблицы базы данных с помощью цикла в процедуре SQL


У меня excel содержит патент нет и дело нет. Я хочу внести номер дела в таблицу базы данных в отношении каждой патентной записи. Для этого сначала я читаю execl и переношу его в datatable, теперь используя цикл foreach на datatable, я запускаю producer для обновления таблицы с помощью команды ниже
Обновление таблицы table1 набор caseno=@caseno где патент =@патентно. Параметр @caseno и @патентно содержит значение из Excel передачи в DataTable.
Это обновит мою таблицу, но она будет попадать в базу данных несколько раз. Мне нужно сделать эту процедуру SQL с помощью цикла.
Пожалуйста, помогите новичку в SQL

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

Datatable DT =данные excel;
По каждому элементу (ДТ строк в DT.таблица[0]
(

Обновление таблицы table1 набор caseno=@caseno где патент =@патентно.
)
Попробуйте сделать это с помощью c#, но он попал в базу данных для подсчета строк в excel, что плохо .Я хочу то же самое в SQL-процедуре. Я отправлю datatable в качестве параметра в sql, но я зацикливаю его и обновляю базу по номеру патента .

ZurdoDev

Можете ли вы поместить свои данные в таблицу в Sql, например временную таблицу? Затем вы можете присоединиться к нему и сделать все обновления в одном операторе. SQL построен для работы с наборами, а не в циклах.

Member 10926063

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

ZurdoDev

Обновление t1
Набор поле1 = Т2.поле1
Из табл. 1 Т1
Таблица2 внутреннее соединение Т2 по Т1.someID = Т2.someID

1 Ответов

Рейтинг:
2

Wendelius

Если я правильно понимаю это требование, то одним из решений будет:
- считывание данных из Excel в таблицу данных, например с помощью OleDbConnection
- передайте таблицу данных в процедуру
- обновление / вставка нужных строк

Несколько ссылок, которые вы можете найти полезными:
- Чтение листа Excel в DataTable, универсальный метод[^]
- Как передать несколько записей в хранимую процедуру[^]

Что касается обновления в процедуре, не используйте курсоры, если вам это не нужно. Если это простой случай обновления существующих строк, вы можете использовать синтаксис UPDATE FROM, как описано в разделе Обновление (Transact-SQL)[^].

Если вам нужно как обновить, так и вставить строку в зависимости от ее существования, рассмотрите возможность использования Слияние (Transact-SQL)[^]