日期:2014-05-19  浏览次数:20637 次

数据库内如何区分一个对象是存储过程还是函数还表?
求区分:存储过程,函数,表?


------解决方案--------------------
xtype

物件類型。可以是這些物件類型之一:
C = CHECK 條件約束
D = DEFAULT 條件約束
F = FOREIGN KEY 條件約束
L = 記錄檔
FN = 存量函數IF = 內嵌資料表函數P = 預存程序
PK = PRIMARY KEY 條件約束 (類型為 K)
RF = 複寫篩選條件預存程序
S = 系統資料表
TF = 資料表函數TR = 觸發程序
U = 使用者資料表
UQ = UNIQUE 條件約束 (類型為 K)
V = 檢視表
X = 延伸預存程式

------解决方案--------------------
select xtype from sysobjects where id = object_id( '對象名 ')
------解决方案--------------------
---鱼老大学习了,偶是你的粉丝啊
/*呵呵,先通过echiynn(寶玥) 的语句查出再与鱼老大的对比,要是熟练就一下可以看出
还有一个很笨的方法
假如想判断a是 存储过程、函数、表, LZ下面方法针对你的问题不实用一般用到前提
知道它是表或者存储过程...,常用于数据库的升级用以下脚本*/
if exists (select * from dbo.sysobjects where id = object_id(N '[dbo].[a] ') and OBJECTPROPERTY(id, N 'IsProcedure ') = 1)
---drop procedure [dbo].[a]
print '是存储过程 '
GO
if exists (select * from dbo.sysobjects where id = object_id(N '[dbo].[a] ') and xtype in (N 'FN ', N 'IF ', N 'TF '))
---drop function [dbo].[a]
print '是函数 '
GO
if exists (select * from dbo.sysobjects where id = object_id(N '[dbo].[a] ') and OBJECTPROPERTY(id, N 'IsUserTable ') = 1)
---drop table [dbo].[a]
print '是表 '
GO
------解决方案--------------------
object_id(N '[dbo].[a] '
这句怎么理解?