#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. Я понял, большое спасибо! Ценю