SQL 2005 字段备注获取

  实际开发中经常为数据字段备注而烦恼,为此写了如下存储过程,一方便查看数据库备注信息.

 1  
 2 create proc [dbo].[GenerateDataDictionaryByTableName]
 3 @tableName  nvarchar(255)
 4 as
 5 begin
 6 --获取数据表名
 7 declare  @tableid int
 8 declare mycursor Cursor
 9 for select object_id from sys.objects where type='U' and  name<>'dtproperties' and name LIKE '%'+ @tableName+'%'
10 --获取字段名称、标识、字段序号、占用字节数、小数位数、允许空等
11 open mycursor
12 fetch next from mycursor into @tableid
13 while(@@fetch_status=0) 
14 begin 
15     SELECT object_name(@tableid) AS 表名,VALUE AS 表说明 FROM sys.extended_properties 
16     WHERE NAME='MS_Description' AND MAJOR_ID=@tableid AND MINOR_ID=0;
17     select 
18         col.colorder 字段序号,
19         col.name 字段名,
20         t.name 类型,
21         col.length 占用字节数,
22         COLUMNPROPERTY(col.id,col.name,'PRECISION') as 长度,
23         isnull(COLUMNPROPERTY(col.id,col.name,'Scale'),0) as 小数位数,
24         (case when 
25             (SELECT count(*)
26                 FROM sysobjects
27                 WHERE (name in
28                     (SELECT name
29                         FROM sysindexes
30                         WHERE (id = col.id) 
31                             AND (indid in
32                                     (SELECT indid
33                                      FROM sysindexkeys
34                                      WHERE (id = col.id) AND (colid in
35                                             ( SELECT colid
36                                               FROM syscolumns
37                                               WHERE (id = col.id)
38                                                     AND (name = col.name)
39                                               ))
40                                      )
41                                   )
42                    )) AND
43                    (xtype = 'PK')
44               )>0 
45          then '' else '' end) 主键,
46         (case when COLUMNPROPERTY(col.id,col.name,'IsIdentity')=1 then ''else '' end) 标识,
47         (case when col.isnullable=1 then ''else '' end) 允许空,
48         isnull(expro.[value],'') AS 字段说明
49     from sys.syscolumns as col
50     left join sys.systypes as t on col.xtype = t.xusertype
51     left join sys.extended_properties as expro on col.id=expro.major_id AND col.colid = expro.minor_id
52     where id = @tableid 
53     fetch next from mycursor into @tableid
54 end
55 close mycursor
56 deallocate mycursor 
57 end

  在需要查看指定表描述时,输入如下语句:

exec [GenerateDataDictionaryByTableName] N'T_INTE_'

该存储过程会搜索当前数据库中表名包含传入的参数字符串,并返回符合条件的所有表的备注信息。如下返回形如:

  

转载于:https://www.cnblogs.com/Silicon-Fado/archive/2009/08/25/1553530.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值