使用结果集执行动态SQL
我正在使用SQLServer,我想构造一个动态SQL语句。我有几个彼此完全相同的数据库,例如TestDatabase1和TestDatabase2等。由于所有克隆数据库中的模式和表都完全相同,我希望执行一条SQL语句来更新每个表。以下是伪代码:使用结果集执行动态SQL,sql,sql-server,Sql,Sql Server,我正在使用SQLServer,我想构造一个动态SQL语句。我有几个彼此完全相同的数据库,例如TestDatabase1和TestDatabase2等。由于所有克隆数据库中的模式和表都完全相同,我希望执行一条SQL语句来更新每个表。以下是伪代码: for each table x in a test database update x.SomeColumn 我有获取数据库的代码: SELECT name FROM sys.databases WHERE name LIKE '%Test%'
for each table x in a test database
update x.SomeColumn
我有获取数据库的代码:
SELECT name
FROM sys.databases
WHERE name LIKE '%Test%'
但现在我不知道如何处理这些数据。如何更新每个数据库中的每个表?您可以使用
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
您可以使用
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
您计划如何更新数据?您将使用什么标准筛选行或计算新值?您计划如何更新数据?您将使用什么标准筛选行或计算新值?您计划如何更新数据?您将使用什么标准筛选行或计算新值?如果数据库名为“TempDatabase1”、“TempDatabase2”等,如何仅选择这些数据库?您可以使用use语句设置当前数据库。我已经更新了答案。有没有一种方法可以通过动态地而不是声明每个use语句来做到这一点?我遇到了一种随时添加和删除临时数据库的情况,因此我使用select语句并通过数据库名称中的字符串“test”进行筛选。您可以使用
sp_MSforeachdb'use[?];'代码>如果数据库名为“TempDatabase1”、“TempDatabase2”等,如何仅选择这些数据库?可以使用USE语句设置当前数据库。我已经更新了答案。有没有一种方法可以通过动态地而不是声明每个use语句来做到这一点?我遇到了一种随时添加和删除临时数据库的情况,因此我使用select语句并通过数据库名称中的字符串“test”进行筛选。您可以使用sp_MSforeachdb'use[?];'代码>如果数据库名为“TempDatabase1”、“TempDatabase2”等,如何仅选择这些数据库?可以使用USE语句设置当前数据库。我已经更新了答案。有没有一种方法可以通过动态地而不是声明每个use语句来做到这一点?我遇到了一种随时添加和删除临时数据库的情况,因此我使用select语句并通过数据库名称中的字符串“test”进行筛选。您可以使用sp_MSforeachdb'use[?];'代码>