我有一个从多个表中删除数据的存储过程。除了表名外,SQL 都是一样的。
UPDATE desttable
SET desttable.reportarea = esz2reportarea.reportarea
FROM table1 AS desttable JOIN esz2reportarea ON desttable.subdivisn = esz2reportarea.esz
WHERE desttable.reportarea = ''
UPDATE desttable
SET desttable.reportarea = esz2reportarea.reportarea
FROM table2 AS desttable JOIN esz2reportarea ON desttable.subdivisn = esz2reportarea.esz
WHERE desttable.reportarea = ''
...
UPDATE desttable
SET desttable.reportarea = esz2reportarea.reportarea
FROM table10 AS desttable JOIN esz2reportarea ON desttable.subdivisn = esz2reportarea.esz
WHERE desttable.reportarea = ''
Run Code Online (Sandbox Code Playgroud)
我想重写它以使用某种循环,以便 SQL 只编写一次。(这是针对 SQL Server 2008R2。)
需要更新的表列表将保持不变;如果要更新的表列表有任何更改,那将是由于应用程序升级,我必须重新确定当时需要修改哪些表。要更新的表列表将放入临时表中。
SELECT * INTO #tablenames
FROM (VALUES ('table1'), ('table2'), ('table3')) AS …Run Code Online (Sandbox Code Playgroud)