我正在更新多个表中的数据。目前我有一个表有一个字段,“来源”,这只是包含字段“itemid”的所有表的列表。我也有一个表,有2个字段,“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字符。 – 2009-09-09 17:57:26