2014-10-16 2 views
0

이 쿼리에서 오는 모든 테이블을 삭제하려고합니다. 여러 개의 테이블이있을 수 있습니다.커서를 사용하지 않고 일괄 적으로 테이블 놓기

이 쿼리는 내 스테이지 데이터베이스의 테이블 이름을 반환합니다.

SELECT name FROM sys.objects WHERE create_date < GETDATE()-7 

어떻게 커서를 사용하지 않고 테이블을 삭제할 수 있습니까?

답변

0

개체에 대해 당신이 sys.tables를 사용해야 그 테이블에 없습니다 .. 당신 7 일 나이 이상의 모든 테이블의 이름을 확보하려는

SELECT name FROM sys.tables WHERE DATEDIFF(day,create_date,GETDATE()) >= 7 

는 sys.objects을 가정 할

과의 커서 삭제 ... 당신의 자신의 위험

사용

BEGIN TRAN 
DECLARE @DropTables NVARCHAR(MAX) 
SET @DropTables = '' 

SELECT @DropTables = @DropTables + 
    'DROP TABLE '+name+CHAR(10) 
FROM sys.tables 
WHERE DATEDIFF(day,create_date,GETDATE()) >= 7 
EXEC(@DropTables) 
ROLLBACK 
관련 문제