我正在使用SQL Server 2012,并且有一条语句运行存储过程:
SELECT TOP(10)
'exec dbo.PurgeResults '''+ Description + ''',''' + CONVERT(VARCHAR, DATEADD(dd,-30,GetDate()), 101) + ''''
FROM
Alerts
我得到的结果是这样的,但是有很多。
exec dbo.PurgeResults '127 - PM_Sanitation','09/03/2018'
如何转换我必须在结果中运行exec的语句?我不确定我的相位是否正确。
答案 0 :(得分:2)
您可以将结果放入临时表中,然后像动态SQL一样遍历它们并执行它们。您可以像这样修改现有查询:
DECLARE @QueryStatement NVARCHAR(MAX)
SELECT TOP(10)
Query = 'exec dbo.PurgeResults '''+ Description + ''',''' + CONVERT(VARCHAR, DATEADD(dd,-30,GetDate()), 101) + ''''
INTO #QueryTable
FROM Alerts
WHILE EXISTS (SELECT 1 FROM #QueryTable)
BEGIN
SELECT TOP 1
@QueryStatement = Query
FROM #QueryTable
EXEC(@QueryStatement)
DELETE #QueryTable
WHERE Query = @QueryStatement
END