I was in need of a utility script to drop a handful of tables that started with the same prefix the other night, and had to quickly write a script to do it. Since this is a utility script and not a stored procedure, I’m comfortable using EXEC without having nightmares about Little Bobby Tables.

The script starts by declaring a couple of variables to contain the SQL that is being built. The SELECT statement builds a list of tables that start with @Prefix, surrounded by brackets. The cool thing that might surprise you, is that DROP TABLE takes a comma separated list of tables.

 DECLARE @TableList nvarchar(4000)
  , @Prefix nvarchar(50) = 'dataogre%'
 SELECT   @TableList = COALESCE(@TableList + ', ', '') 
                       + QUOTENAME(SCHEMA_NAME(schema_id)) + '.' 
                       + QUOTENAME(OBJECT_NAME((object_id)))
 FROM     sys.objects
 WHERE    name LIKE @Prefix
          AND type = 'U'  
  PRINT @TableList
  --EXEC('DROP TABLE ' + @TableList) 

Add a Comment

Your email address will not be published. Required fields are marked *