使用结果集执行动态SQL

时间:2015-06-11 22:11:17

标签: sql sql-server

我正在使用SQL Server,我想构建一个动态SQL语句。我有几个数据库是彼此的精确克隆,例如TestDatabase1与TestDatabase2等相同。由于所有克隆数据库中的模式和表完全相同,我想执行更新每个表的SQL语句。这是伪代码:

for each table x in a test database
update x.SomeColumn

我有代码来抓取数据库:

SELECT name 
FROM sys.databases
WHERE name LIKE '%Test%'

但现在我不知道如何处理这些数据。如何更新每个数据库中的每个表?

1 个答案:

答案 0 :(得分:0)

您可以使用sp_MSforeachtable针对数据库中的每个表运行Update语句。例如:

-- First set the database you want to use:
USE TempDatabase1
GO

    EXEC sp_MSforeachtable 'UPDATE ? SET SomeColumn = 2' 

GO

USE TempDatabase2
GO

    EXEC sp_MSforeachtable 'UPDATE ? SET SomeColumn = 2' 
GO