ALTER FUNCTION dbo.fnTableExists (@sTableName VARCHAR(50)) RETURNS TinyInt AS BEGIN IF @sTableName LIKE '#%' SET @sTableName = 'tempdb..' + @sTableName RETURN CASE WHEN object_id(@sTableName) IS NOT NULL THEN 1 ELSE 0 END END GO --test create table #temp (ch char(1)) --if object_Id(@tablename) is not null declare @tablename varchar(10) declare @execS nvarchar(max) set @tablename = '#temp' --select @Ret = dbo.fnTableExists(@tablename) if dbo.fnTableExists(@tablename) = 1 begin print 'Trying to delete...' set @execS = 'drop table ' + @tablename exec sp_executesql @execS -- more tests end GO create table #temp (ch char(1)) drop table #temp