狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

MS sql server判斷數(shù)據(jù)庫、表、存儲過程、視圖、函數(shù)是否存在

admin
2012年1月21日 18:17 本文熱度 3316

--如果是實(shí)表可以用
if exists (select * from sysobjects where id = object_id(N'[dbo].[表名]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[表名]

--如果是臨時表可以用(說明,如果用查找實(shí)表方法來打臨時表會找不到.發(fā)布區(qū)別對代.)
if object_id('tempdb..##temp') is not null
   drop table ##temp


--判斷存儲過程是否存在
if exists(select 1 from sysobjects where id=object_id('所有者.存儲過程名') and xtype='P')  
print '存在'  
else  
print '不存在'


--判斷視圖是否存在
--SQL Server 2000
IF EXISTS (SELECT * FROM sysviews WHERE object_id = '[dbo].[視圖名]'
--SQL Server 2005
IF EXISTS (SELECT * FROM sys.views WHERE object_id = '[dbo].[視圖名]'



/*
sysObjects (
Name sysname,      --object 名稱
id   int,          --object id
xtype char(2),     -- object 類型  
type char(2),     -- Object 類型(與xtype 似乎一模一樣? 有點(diǎn)郁悶…)
uid   smallint,     -- object 所有者的ID
...                --其他的字段不常用到。  
)


sysobjects的xtype 代表的對象類型。可以是下列對象類型中的一種:
C = CHECK 約束
D = 默認(rèn)值或 DEFAULT 約束
F = FOREIGN KEY 約束
L = 日志
FN = 標(biāo)量函數(shù)
IF = 內(nèi)嵌表函數(shù)
P = 存儲過程
PK = PRIMARY KEY 約束(類型是 K)
RF = 復(fù)制篩選存儲過程
S = 系統(tǒng)表
TF = 表函數(shù)
TR = 觸發(fā)器
U = 用戶表
UQ = UNIQUE 約束(類型是 K)
V = 視圖
X = 擴(kuò)展存儲過程




object_id和data_object_id都是表示數(shù)據(jù)庫對象的唯一標(biāo)志。

object_id是數(shù)據(jù)庫對象的邏輯id,data_object_id是數(shù)據(jù)庫對象的物理id。

如果一些object沒有物理屬性的話那它就不存在data_object_id,例如procedure,function,package,data type,db link,mv定義,view定義,臨時表,分區(qū)表定義等等這些object都是沒有對應(yīng)著某個segment,因此它們的data_object_id 都為空。

當(dāng)一個表建立的時候,他的object_id 和 data_object_id是相等的。當(dāng)表move和truncate后data_object_id會發(fā)生變化。修改表結(jié)構(gòu)不會更改。

select object_id,data_object_id from user_objects where object_name=’T';
OBJECT_ID DATA_OBJECT_ID
———- ————–
63053 63464

SELECT HEADER_FILE,HEADER_BLOCK,BLOCKS FROM DBA_SEGMENTS WHERE SEGMENT_NAME=’T’ AND OWNER=’TEST’;
HEADER_FILE HEADER_BLOCK BLOCKS
———– ———— ———-
4 467 8


*/



SELECT * FROM sysobjects WHERE xtype='U' AND id=OBJECT_ID('Booking')


該文章在 2012/1/21 18:28:26 編輯過

全部評論2

admin
2012年1月21日 18:22

1 判斷數(shù)據(jù)庫是否存在
Sql代碼
if exists (select * from sys.databases where name = ’數(shù)據(jù)庫名’
  drop database [數(shù)據(jù)庫名]  if exists (select * from sys.databases where name = ’數(shù)據(jù)庫名’)
  drop database [數(shù)據(jù)庫名]

2 判斷表是否存在
Sql代碼
if exists (select * from sysobjects where id = object_id(N’[表名]’) and OBJECTPROPERTY(id, N’IsUserTable’) = 1) 
  drop table [表名]  if exists (select * from sysobjects where id = object_id(N’[表名]’) and OBJECTPROPERTY(id, N’IsUserTable’) = 1)
  drop table [表名]

3 判斷存儲過程是否存在
Sql代碼
if exists (select * from sysobjects where id = object_id(N’[存儲過程名]’) and OBJECTPROPERTY(id, N’IsProcedure’) = 1) 
  drop procedure [存儲過程名]  if exists (select * from sysobjects where id = object_id(N’[存儲過程名]’) and OBJECTPROPERTY(id, N’IsProcedure’) = 1)
  drop procedure [存儲過程名]

4 判斷臨時表是否存在
Sql代碼
if object_id(’tempdb..#臨時表名’) is not null   
  drop table #臨時表名  if object_id(’tempdb..#臨時表名’) is not null 
  drop table #臨時表名

5 判斷視圖是否存在
Sql代碼
--SQL Server 2000  
IF EXISTS (SELECT * FROM sysviews WHERE object_id = ’[dbo].[視圖名]’ 
--SQL Server 2005  
IF EXISTS (SELECT * FROM sys.views WHERE object_id = ’[dbo].[視圖名]’

6 判斷函數(shù)是否存在
Sql代碼
--  判斷要創(chuàng)建的函數(shù)名是否存在   
  if exists (select * from dbo.sysobjects where id = object_id(N’[dbo].[函數(shù)名]’) and xtype in (N’FN’, N’IF’, N’TF’))   
  drop function [dbo].[函數(shù)名]    --  判斷要創(chuàng)建的函數(shù)名是否存在 
  if exists (select * from dbo.sysobjects where id = object_id(N’[dbo].[函數(shù)名]’) and xtype in (N’FN’, N’IF’, N’TF’)) 
  drop function [dbo].[函數(shù)名] 

7 獲取用戶創(chuàng)建的對象信息
Sql代碼
SELECT [name],[id],crdate FROM sysobjects where xtype=’U’ 
 
/* 
xtype 的表示參數(shù)類型,通常包括如下這些 
C = CHECK 約束 
D = 默認(rèn)值或 DEFAULT 約束 
F = FOREIGN KEY 約束 
L = 日志 
FN = 標(biāo)量函數(shù) 
IF = 內(nèi)嵌表函數(shù) 
P = 存儲過程 
PK = PRIMARY KEY 約束(類型是 K) 
RF = 復(fù)制篩選存儲過程 
S = 系統(tǒng)表 
TF = 表函數(shù) 
TR = 觸發(fā)器 
U = 用戶表 
UQ = UNIQUE 約束(類型是 K) 
V = 視圖 
X = 擴(kuò)展存儲過程 
*/  SELECT [name],[id],crdate FROM sysobjects where xtype=’U’
/*
xtype 的表示參數(shù)類型,通常包括如下這些
C = CHECK 約束
D = 默認(rèn)值或 DEFAULT 約束
F = FOREIGN KEY 約束
L = 日志
FN = 標(biāo)量函數(shù)
IF = 內(nèi)嵌表函數(shù)
P = 存儲過程
PK = PRIMARY KEY 約束(類型是 K)
RF = 復(fù)制篩選存儲過程
S = 系統(tǒng)表
TF = 表函數(shù)
TR = 觸發(fā)器
U = 用戶表
UQ = UNIQUE 約束(類型是 K)
V = 視圖
X = 擴(kuò)展存儲過程
*/

8 判斷列是否存在
Sql代碼
if exists(select * from syscolumns where id=object_id(’表名’) and name=’列名’
  alter table 表名 drop column 列名  if exists(select * from syscolumns where id=object_id(’表名’) and name=’列名’)
  alter table 表名 drop column 列名

9 判斷列是否自增列
Sql代碼
if columnproperty(object_id(’table’),’col’,’IsIdentity’)=1 
  print ’自增列’ 
else 
  print ’不是自增列’ 
 
SELECT * FROM sys.columns WHERE object_id=OBJECT_ID(’表名’
AND is_identity=1  if columnproperty(object_id(’table’),’col’,’IsIdentity’)=1
  print ’自增列’
else
  print ’不是自增列’
SELECT * FROM sys.columns WHERE object_id=OBJECT_ID(’表名’)
AND is_identity=1

10 判斷表中是否存在索引
Sql代碼
if exists(select * from sysindexes where id=object_id(’表名’) and name=’索引名’)   
  print  ’存在’   
else   
  print  ’不存在  if exists(select * from sysindexes where id=object_id(’表名’) and name=’索引名’) 
  print  ’存在’ 
else 
  print  ’不存在

11 查看數(shù)據(jù)庫中對象
Sql代碼
SELECT * FROM sys.sysobjects WHERE name=’對象名’  SELECT * FROM sys.sysobjects WHERE name=’對象名’


該評論在 2012/1/21 18:25:04 編輯過
admin
2012年1月21日 18:27
sql下用了判斷各種資源是否存在的代碼,很實(shí)用。需要的朋友可以參考下。sql判斷是否存在
--判斷數(shù)據(jù)庫是否存在
if exists(select * from master..sysdatabases where name=N'庫名')
print 'exists'
else
print 'not exists'
---------------
-- 判斷要創(chuàng)建的表名是否存在
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[表名]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
-- 刪除表
drop table [dbo].[表名]
GO
---------------
--判斷要創(chuàng)建臨時表是否存在
If Object_Id('Tempdb.dbo.#Test') Is Not Null
Begin
print '存在'
End
Else
Begin
print '不存在'
End
---------------
-- 判斷要創(chuàng)建的存儲過程名是否存在
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[存儲過程名]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
-- 刪除存儲過程
drop procedure [dbo].[存儲過程名]
GO
---------------
-- 判斷要創(chuàng)建的視圖名是否存在
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[視圖名]') and OBJECTPROPERTY(id, N'IsView') = 1)
-- 刪除視圖
drop view [dbo].[視圖名]
GO
---------------
-- 判斷要創(chuàng)建的函數(shù)名是否存在
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[函數(shù)名]') and xtype in (N'FN', N'IF', N'TF'))
-- 刪除函數(shù)
drop function [dbo].[函數(shù)名]
GO
if col_length('表名', '列名') is null
print '不存在'
select 1 from sysobjects where id in (select id from syscolumns where name='列名') and name='表名'

該評論在 2012/1/21 18:28:00 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved