我有想要应用于多个表的代码,而不是简单地复制和替换表名,而是想使用某种循环或游标来简化代码。
我设想设置一个表名数组,并使用索引遍历该列表,检索每个表名,并在适用于我的代码的情况下使用动态SQL散布表名。
据我所知,由于在SQL中没有“数组”构造,因此我不确定这将如何工作。
关于如何解决这个问题的任何想法?
这是一种实现方法:
--Declare a table variable to hold your table names (and column names in case needed) declare @listOfTablesToUpdate table (tableName varchar(100), columnNameToUpdate varchar(50)) --insert the tables that you want to work with. insert into @listOfTablesToUpdate values ('Table1', 'column2') insert into @listOfTablesToUpdate values ('Table2', 'column3') insert into @listOfTablesToUpdate values ('Table3', 'column4') --Cursor for iterating declare @tableCursor cursor, @tableName varchar(100), @columnName varchar(50) set @tableCursor = cursor for select * from @listOfTablesToUpdate open @tableCursor fetch next from @tableCursor into @tableName, @columnName while(@@fetch_status = 0) begin --dynamic sql declare @sql varchar(max) --Your logic here...this is just an example set @sql = 'update '+@tableName+' set '+@columnName+' = '+<value>+' where '+@columnName +' = '+<someothervalue> exec @sql fetch next from @tableCursor into @tableName, @columnName end close @tableCursor deallocate @tableCursor