Я бы не использовал цикл для этого. Здесь гораздо больше кода, чтобы использовать курсор, чем какой-то простой динамический SQL, и вам все равно нужно использовать динамический SQL. Но имейте в виду, что удаление нескольких таблиц может быть проблематичным, если у вас есть внешние ключи. Вам нужно либо удалить эти внешние ключи, либо удалить таблицы в определенном порядке.
declare @SQL nvarchar(max) = ''
select @SQL = @SQL + 'drop table ' + quotename(TableName) + ';'
from YourQueryThatGivesYouTableNames
exec sp_executesql @SQL