Справка по SQL Server Insert Query - PullRequest
       0

Справка по SQL Server Insert Query

1 голос
/ 28 октября 2010

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

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

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

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

1 Ответ

2 голосов
/ 14 января 2011

По сути, я вижу два способа решения этой проблемы:

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

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

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

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