Sql server 循环查询表并执行查询的最佳方法
我有一个表,其中包含一列查询。我需要逐个执行它们,并将结果保存在另一个表中。在存储过程中实现此逻辑的最佳方法是什么 例如,该表如下所示:Sql server 循环查询表并执行查询的最佳方法,sql-server,tsql,stored-procedures,Sql Server,Tsql,Stored Procedures,我有一个表,其中包含一列查询。我需要逐个执行它们,并将结果保存在另一个表中。在存储过程中实现此逻辑的最佳方法是什么 例如,该表如下所示: id query 1 select count(*) from table_a 2 select count(*) from table_b 光标可以是一个选项,但还有其他方法吗?您可以尝试使用XML的和动态SQL的组合执行此任务: DECLARE @mySchema NVARCHAR(10) = 'dbo' DECLARE
id query
1 select count(*) from table_a
2 select count(*) from table_b
光标可以是一个选项,但还有其他方法吗?您可以尝试使用XML的
和动态SQL的组合执行此任务:
DECLARE @mySchema NVARCHAR(10) = 'dbo'
DECLARE @stmt NVARCHAR(MAX) = '';
SELECT @stmt = (SELECT stmt FROM(
SELECT STUFF((
SELECT ' UNION ALL SELECT ' + CHAR(39) + s.name + '_' + o.name + CHAR(39) + ' AS TabName, COUNT(*) AS Cnt FROM ' + s.name + '.' + o.name
FROM sys.all_objects o
JOIN sys.schemas s ON s.schema_id = o.schema_id
WHERE o.type = 'U'
AND s.name = @mySchema
FOR XML PATH('')
), 1, 11, '') AS stmt
) xm)
EXEC(@stmt)
但是,如果只需要某些表,则必须稍微修改查询。此外,您可以修改查询以从表中获取所选内容,并通过UNION ALL将其联接起来。查询是否总是返回一行一列?您没有指定目标表架构,这可能会影响解决方案。目标表是否只有一个int列?您的所有查询是否都从表中选择count?您的示例数据表明是这样的?这将是动态SQL的一个小问题。但是,您需要详细说明所需的结果/结构。您希望结果如何:每个id
及其结果,还是所有结果的总和?