Using COALESCE function we can turn multiple rows into a single string in SQL Server
Following code is working fine, to delete All the table in a Schema
SELECT * INTO #mytemp FROM INFORMATION_SCHEMA.SCHEMATA
WHERE [SCHEMA_NAME] in ('schemaname1','schemaname2','schemaname3')
WHILE (SELECT Count(*) FROM #mytemp) > 0
BEGIN
DECLARE @SCHEMA_NAME varchar(100)
SELECT @SCHEMA_NAME = [SCHEMA_NAME] FROM #mytemp
DECLARE @SQL VARCHAR(MAX)
SET @SQL='';
--Step 1: Remove all CONSTRAINT
SELECT @SQL= COALESCE(@SQL,'') +'ALTER TABLE ' +'[' + s.name + '].[' + t.name + ']' +' DROP CONSTRAINT [' + f.name +']'+ ' ; '
FROM sys.foreign_keys f
INNER JOIN sys.TABLES t ON f.parent_object_id=t.object_id
INNER JOIN sys.schemas s ON t.schema_id=s.schema_id
WHERE t.is_ms_shipped=0
and t.schema_id = schema_id(@SCHEMA_NAME);
--Step 2: Drop all Tables
SELECT @SQL= COALESCE(@SQL,'')+'DROP TABLE ' + '[' + s.name + '].[' + t.name + ']'+ ' ; '
FROM sys.TABLES t
INNER JOIN sys.schemas s ON t.schema_id=s.schema_id
WHERE t.is_ms_shipped=0 and t.schema_id = schema_id(@SCHEMA_NAME);
EXEC(@SQL)
--Custom Query End
DELETE #mytemp WHERE [SCHEMA_NAME] = @SCHEMA_NAME
END
DROP TABLE #mytemp