Справка по вводу запроса SQL Server

У меня есть следующий код, который я использую в Query для обновления таблицы с именем ListClientCasePresentingIncidents, которая использует функцию fnSplit для разделения разделенного запятой nvarchar с именем @CasePresentingIncidents.

IF ( @CasePresentingIncidents <> '' ) INSERT INTO ListClientCasePresentingIncidents ( PresentingIncident , CaseID ) SELECT SplitText AS PresentingIncident , @CaseID FROM fnSplit(@CasePresentingIncidents) 

Все это отлично работает по одной записи за раз, передавая значение для @CaseID и @CasePresentingIncidents.

Вопрос в том, как мне изменить этот код так, чтобы он принимал значения из таблицы ClientCase вместо двух параметров? Необходимо заменить @CaseID и @CasePresentingIncidents значениями из ClientCase.CaseID и ClientCase.CasePresentingIncidents. Большое спасибо.

В принципе, я вижу два способа решения этого:

  1. Объедините (объедините) все значения ClientCase.CasePresentingIncidents , которые должны быть обработаны, в одну строку и передайте их как аргумент fnSplit() (т.е. dbo.fnSplit() ?). В зависимости от того, какую версию SQL Server вы используете, вы можете рассмотреть различные способы конкатенации. Если вам понадобятся некоторые рекомендации здесь, я думаю, что это может быть хорошей отправной точкой: объединение значений строк (существует много похожих вопросов, связанных с ним и перечисленных соответственно в разделе «Связанный раздел»).

  2. Используйте курсор для вызова dbo.fnSplit() для каждой строки ClientCase . Возможно, я должен предложить создать новую табличную функцию dbo.fnSplitMultiple() которая будет применять этот подход. В вашем примере вы должны выбрать из dbo.fnSplitMultiple() вместо dbo.fnSplit() .

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

  • SQL Server - как вставить запись и убедиться, что она уникальна
  • SQL Server генерирует уникальное значение
  • Вставка символа в начале строки в SQL
  • Проблема с вложением в базу данных SQL Server с Java
  • Есть ли лучший способ получить уникальный идентификатор в INSERT?
  • не может вставлять данные в базу данных
  • ASP.Net вставляет данные из текстового поля в базу данных
  • SQL Server, не может вставить нуль в поле первичного ключа?
  • Как избежать блокировки таблиц при вставке данных в таблицу
  • SQL быстрые INSERT без UPDATE
  • Объединение двух значений в Insert - SQL
  • Давайте будем гением компьютера.