Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用结果集执行动态SQL_Sql_Sql Server - Fatal编程技术网

使用结果集执行动态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%'

我正在使用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%'

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

您可以使用
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[?];'