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

#sql #sql-server

#sql #sql-сервер

Вопрос:

Мой запрос

 WHILE @ChangedColumnCount > 0 -- Countdown
BEGIN
    SELECT @CurrentFieldName = '[' [FieldName] ']' , @ChangedFieldName = '[' [PreviousField] ']'
        FROM @UpdateColumn
        WHERE id=@ChangedColumnCount
        Declare @UpdateColumnQuery nvarchar(max)
        set @UpdateColumnQuery = 'Update CustomObjectMappingTable set ObjectFieldName = '   @ChangedFieldName   ' where CustomObjectID = 1072 AND ObjectFieldName = '   @CurrentFieldName
        print @UpdateColumnQuery
        EXEC(@UpdateColumnQuery)

    SET @ChangedColumnCount = @ChangedColumnCount - 1; -- Countdown
END
 

это выдает ошибку при запуске команды

Обновить CustomObjectMappingTable установить ObjectFieldName = [StudyHistory] где CustomObjectID = 1072 И ObjectFieldName = [Квалификация] Сообщение 207, уровень 16, состояние 1, строка 1

Недопустимое имя столбца ‘Qualifications’.

кто-нибудь мне поможет? помните, мне нужно передать значение в переменной, но оно выдает ошибку

Ответ №1:

Попробуйте изменить свой @UpdateColumnQuery на:

 SET @UpdateColumnQuery = 'UPDATE CustomObjectMappingTable SET ObjectFieldName = '''   @ChangedFieldName   ''' WHERE CustomObjectID = 1072 AND ObjectFieldName = '''   @CurrentFieldName   ''';';
 

Результирующий динамический SQL:

 UPDATE CustomObjectMappingTable SET ObjectFieldName = '[StudyHistory]' WHERE CustomObjectID = 1072 AND ObjectFieldName = '[Qualifications]';
 

Ваше обновление / где строковые значения должны быть в одинарных кавычках.

Комментарии:

1. Я понял, большое спасибо! Ценю