Я занимаюсь обновлением данных в нескольких таблицах. В настоящее время у меня есть таблица, в которой есть одно поле, «источники», это всего лишь список всех таблиц, которые включают поле «itemid». У меня также есть таблица с двумя полями, «itemid» и «olditemid». В TSQL я хотел бы перебирать источники и создавать инструкции обновления на лету. Вот что я пытался сделать, но я получаю некоторые ошибки в инструкции обновления, что моя переменная не объявлена. Я не уверен, что это даже близко, я должен это делать. Идеи?Создание операторов SQL UPDATE «на лету»
DECLARE @tblName varchar(50)
DECLARE process_cursor CURSOR FOR
SELECT source
FROM tmpTableNames
OPEN process_cursor
FETCH NEXT FROM processcursor
INTO @tblName
WHILE @@FETCH_STATUS = 0
UPDATE @tblName
SET itemid = r.itemid
FROM @tblName v, itemref r
WHERE r.olditemid = v.itemid
FETCH NEXT FROM process_cursor
INTO @tblName
END
CLOSE processcursor
DEALLOCATE processcursor
@tblName должно быть типа 'sysname', которое является правильным типом и длиной для имен объектов. varchar (50) слишком короткий для некоторых объектов, а имена таблиц могут содержать символы Unicode. –