在SQL语句中运行execute语句

时间:2018-10-03 16:59:30

标签: sql sql-server-2012

我正在使用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的语句?我不确定我的相位是否正确。

1 个答案:

答案 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