在SQL语句中运行execute语句

在SQL语句中运行execute语句,sql,sql-server-2012,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/2

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

您可以将结果放入临时表中,然后像动态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

您可以将结果放入临时表中,然后像动态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

现在,您只将
exec
命令显示为一个字符串,它是select QUERY的输出。它显示一个字符串,但我如何输出并运行它。我正在尝试删除数据。现在您只将
exec
命令显示为字符串,这是select QUERY的输出。它显示的是字符串,但我如何输出并运行它。我正在努力消除数据。是的。你可以自己验证。创建一个简单的存储过程,然后尝试使用
DECLARE@QueryStatement NVARCHAR(MAX)=“EXEC procName”调用它;EXEC(@QueryStatement)
现在没有办法测试它,尽管很感谢您的回答:-)现在测试这个,我会在几分钟后告诉您。它是有效的,我必须添加一个
drop table
命令才能重新运行它。是的。你可以自己验证。创建一个简单的存储过程,然后尝试使用
DECLARE@QueryStatement NVARCHAR(MAX)=“EXEC procName”调用它;EXEC(@QueryStatement)
现在没有办法测试它,尽管很感谢您的回答:-)现在测试这个,我会在几分钟后告诉您。它是有效的,我必须添加一个
drop table
命令才能重新运行它。