DECLARE @DATABASE AS VARCHAR(20)
SET @DATABASE = 'Northwind' -- EX: AdventureWorks
DECLARE @WHATTOCREATE AS CHAR(1)
SET @WHATTOCREATE = 'P' -- EX: p = procedures, v = views
EXEC ('USE ' +@DATABASE)
PRINT 'USE [' + @DATABASE + ']' + CHAR(13) + 'GO' + CHAR(13)
DECLARE JOB_CURSOR CURSOR FOR
SELECT OBJECT_ID FROM SYS.OBJECTS WHERE [TYPE] IN (@WHATTOCREATE)
OPEN JOB_CURSOR
DECLARE @OBJECT_ID AS INT
FETCH NEXT FROM JOB_CURSOR
INTO @OBJECT_ID
DECLARE @SQL AS VARCHAR(MAX)
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @SQL = 'IF OBJECT_ID (''['+ S.NAME + '].['+ O.NAME + ']'') IS NOT NULL
BEGIN
DROP '+
CASE O.TYPE
WHEN 'P' THEN 'PROCEDURE '
WHEN 'V' THEN 'VIEW '
END + ' ['+ S.NAME + '].['+ O.NAME + ']
END
GO' + CHAR(13) + CHAR(13) +
+ M.DEFINITION + CHAR(13) + 'GO' + CHAR(13)
FROM SYS.OBJECTS O
INNER JOIN SYS.SQL_MODULES M ON O.OBJECT_ID = M.OBJECT_ID
INNER JOIN SYS.SCHEMAS S ON S.SCHEMA_ID = O.SCHEMA_ID
WHERE O.OBJECT_ID = @OBJECT_ID
PRINT @SQL
FETCH NEXT FROM JOB_CURSOR
INTO @OBJECT_ID
END
CLOSE JOB_CURSOR
DEALLOCATE JOB_CURSOR