您不必使用存儲過程,甚至不必使用具有動態SQL的過程批處理。
只需一些手動步驟。運行此查詢
select 'drop table [database].' + schema_name(schema_id) + '.' + quotename(name)
from [database].sys.objects
將結果複製到查詢窗口並再次運行。例如,如果您使用.NET應用程序,則可以從該查詢中獲取結果,並將其作爲下一個的CommandText發送。
您的動態SQL查詢批寫得無光標如下:
declare @cmd nvarchar(max) = '';
select @cmd = @cmd + 'drop table [database].' + schema_name(schema_id) + '.' + quotename(name) + ';'
from [database].sys.objects
where DATEDIFF(day,create_date,GETDATE()) = 26 AND schema_id = 1 AND type ='U';
exec (@cmd);
我不認爲我做到了足夠
語法您清除正在尋找,如果我要彌補:
DROP TABLES
WHERE object_id IN (
select object_id
from [database].sys.tables
where DATEDIFF(day,create_date,GETDATE()) = 26 AND schema_id = 1 AND type ='U')
只是不存在。 DROP TABLE語法:
DROP TABLE [database_name。 [schema_name]。 | schema_name。 ]
table_name [,... n] [; ]
沒有任何動態能力的跡象。
你究竟在努力實現什麼。你的問題缺乏清晰度。 – 2013-04-23 04:01:45
抱歉沒有這麼清楚,我只是想在SQL查詢和我嘗試很多方法,但仍然失敗 – askingPPl 2013-04-23 04:15:10