尝试执行DROP VIEW语句,该语句是计划上的SELECT语句的结果

时间:2015-09-24 17:02:21

标签: sql select view scheduled-tasks

所以我需要定期删除由我们的应用程序中出错的作业孤立的视图,以识别它们我运行以下查询,该查询生成大量带有上述需要删除的视图的DROP VIEW语句。 / p>

SELECT 'DROP VIEW ' + TABLE_NAME 
FROM INFORMATION_SCHEMA.VIEWS 
WHERE TABLE_NAME LIKE 'SEF_%'

SELECT 'DROP VIEW ' + TABLE_NAME 
FROM INFORMATION_SCHEMA.VIEWS 
WHERE TABLE_NAME LIKE 'SCF_%'

我的问题是我需要在计划任务上运行那些DROP VIEW语句,因此运行SELECT语句不是问题(因为我可以安排它),但我还需要运行结果查询在一个时间表上。任何帮助将不胜感激。

以下评论中,我忘了提到这是SQL Server 2008 R2 Enterprise。

1 个答案:

答案 0 :(得分:0)

您需要将查询结果存储在变量中并执行它。

<强> SqlFiddle

DECLARE @sql NVARCHAR(MAX) = N'';

SELECT @sql = @sql + 'DROP VIEW ' + TABLE_NAME + ';' + CHAR(10) + CHAR(13)
FROM INFORMATION_SCHEMA.VIEWS
WHERE TABLE_NAME LIKE 'SEF_%'
   OR TABLE_NAME LIKE 'SCF_%';

/* Debug */
SELECT @sql;

EXEC [dbo].[sp_executesql]
    @sql;

为了将来你应该创建视图WITH SCHEMABINDING并首先强制删除视图然后表。

相关问题