在 SQL 语句中运行执行语句



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

最新更新