我正在使用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'
我如何转动我必须在结果中运行可执行文件的语句?我不确定我是否正确地分阶段。
您可以将结果放入临时表中,然后循环访问它们并像动态 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