USP_DROPOBJECTIFEXISTS
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SCHEMA | nvarchar(128) | IN | |
@OBJECTNAME | nvarchar(128) | IN | |
@TABLENAME | nvarchar(128) | IN |
Definition
Copy
create procedure BBDW.[USP_DROPOBJECTIFEXISTS] (
@SCHEMA nvarchar(128),
@OBJECTNAME nvarchar(128),
@TABLENAME nvarchar(128) = null
) as
declare @SQL nvarchar(300)
--Drop existing table
if exists (select * from sys.[objects] o inner join sys.[schemas] s on o.[schema_id] = s.[schema_id] where o.[name] = @OBJECTNAME and s.[name] = @SCHEMA and o.[type] = 'U')
begin
set @SQL = 'drop table ' + @SCHEMA + '.' + @OBJECTNAME
exec sp_executesql @SQL
end
--Drop existing view
else if exists (select * from sys.[objects] o inner join sys.[schemas] s on o.[schema_id] = s.[schema_id] where o.[name] = @OBJECTNAME and s.[name] = @SCHEMA and o.[type] = 'V')
begin
set @SQL = 'drop view ' + @SCHEMA + '.' + @OBJECTNAME
exec sp_executesql @SQL
end
--Drop existing stored procedure
else if exists (select * from sys.[objects] o inner join sys.[schemas] s on o.[schema_id] = s.[schema_id] where o.[name] = @OBJECTNAME and s.[name] = @SCHEMA and o.[type] = 'P')
begin
set @SQL = 'drop procedure ' + @SCHEMA + '.' + @OBJECTNAME
exec sp_executesql @SQL
end
--Drop existing function
else if exists (select * from sys.[objects] o inner join sys.[schemas] s on o.[schema_id] = s.[schema_id] where o.[name] = @OBJECTNAME and s.[name] = @SCHEMA and o.[type] in ('FN', 'TF', 'IF'))
begin
set @SQL = 'drop function ' + @SCHEMA + '.' + @OBJECTNAME
exec sp_executesql @SQL
end
--Drop existing index
else if exists (select * from sys.[indexes] i inner join sys.[objects] o on i.[object_id] = o.[object_id] inner join sys.[schemas] s on o.[schema_id] = s.[schema_id] where i.[name] = @OBJECTNAME and o.[name] = @TABLENAME and s.[name] = @SCHEMA and o.[type] = 'U')
begin
set @SQL = 'drop index ' + @OBJECTNAME + ' on ' + @SCHEMA + '.' + @TABLENAME
exec sp_executesql @SQL
end
--Drop existing trigger
else if exists (select * from sys.[objects] o inner join sys.[schemas] s on o.[schema_id] = s.[schema_id] where o.[name] = @OBJECTNAME and s.[name] = @SCHEMA and o.[type] = 'TR')
begin
set @SQL = 'drop trigger ' + @SCHEMA + '.' + @OBJECTNAME
exec sp_executesql @SQL
end