1. 程式人生 > >sqlserver 各種判斷是否存在(表名、函式、儲存過程等)

sqlserver 各種判斷是否存在(表名、函式、儲存過程等)

庫是否存在 
if exists(select * from master..sysdatabases where name=N'庫名') 
print 'exists'
else
print 'not exists'
--------------- 
-- 判斷要建立的表名是否存在 
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[表名]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) 
-- 刪除表 
drop table [dbo].[表名] 
GO 
--------------- 

-----列是否存在 
 IF COL_LENGTH( '表名','列名') IS NULL
    PRINT 'not exists'
ELSE
 PRINT 'exists'
alter table 表名 drop constraint 預設值名稱 
go 
alter table 表名 drop column 列名 
go 
----- 
--判斷要建立臨時表是否存在 
If Object_Id('Tempdb.dbo.#Test') Is Not Null
Begin
print '存在'
End
Else
Begin
print '不存在'
End
--------------- 
-- 判斷要建立的儲存過程名是否存在 

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[儲存過程名]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) 
-- 刪除儲存過程 
drop procedure [dbo].[儲存過程名] 
GO 
--------------- 
-- 判斷要建立的檢視名是否存在 
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[檢視名]') and OBJECTPROPERTY(id, N'IsView') = 1) 

-- 刪除檢視 
drop view [dbo].[檢視名] 
GO 
--------------- 
-- 判斷要建立的函式名是否存在 
if exists (select * from sysobjects where xtype='fn' and name='函式名') 
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[函式名]') and xtype in (N'FN', N'IF', N'TF')) 
-- 刪除函式 
drop function [dbo].[函式名] 
GO 
if col_length('表名', '列名') is null
print '不存在'
select 1 from sysobjects where id in (select id from syscolumns where name='列名') and name='表名'