zoukankan      html  css  js  c++  java
  • SQLServer存储过程自制数据字典

    相信很多小伙伴都对【数据字典】很头疼。

    小编刚入职的时候,老大丢一个项目过来,就一个设计文档,数据字典木有,字段说明木有,

    全部都需要靠“联系上下文”来猜。所以小伙伴门一定要养成说明字段的习惯哦。

    说明字段后我们无需特意建立数据字典,直接建立一个存储过程就可以查询字段意义了。

    存储过程建立如下,小伙伴们直接拷贝执行就行了。

    /****** Object:  StoredProcedure [dbo].[sp_tableDict]    Script Date: 2019/1/14 10:49:40 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE PROCEDURE [dbo].[sp_tableDict]
    (
        @tableName AS VARCHAR(100)
    )
        --@parameter_name AS scalar_data_type ( = default_value ), ...
    -- WITH ENCRYPTION, RECOMPILE, EXECUTE AS CALLER|SELF|OWNER| 'user_name'
    AS
    SELECT  表名 = CASE WHEN a.colorder = 1 THEN d.name
                      ELSE ''
                 END ,
            表说明 = CASE WHEN a.colorder = 1 THEN ISNULL(f.value, '')
                       ELSE ''
                  END ,
            字段序号 = a.colorder ,
            字段名 = a.name ,
            标识 = CASE WHEN COLUMNPROPERTY(a.id, a.name, 'IsIdentity') = 1 THEN ''
                      ELSE ''
                 END ,
            主键 = CASE WHEN EXISTS ( SELECT  1
                                    FROM    sysobjects
                                    WHERE   xtype = 'PK'
                                            AND name IN ( SELECT  name
                                                          FROM    sysindexes
                                                          WHERE   indid IN ( SELECT indid
                                                                             FROM   sysindexkeys
                                                                             WHERE  id = a.id
                                                                                    AND colid = a.colid ) ) ) THEN ''
                      ELSE ''
                 END ,
            类型 = b.name ,
            占用字节数 = a.length ,
            长度 = COLUMNPROPERTY(a.id, a.name, 'PRECISION') ,
            小数位数 = ISNULL(COLUMNPROPERTY(a.id, a.name, 'Scale'), 0) ,
            允许空 = CASE WHEN a.isnullable = 1 THEN ''
                       ELSE ''
                  END ,
            默认值 = ISNULL(e.text, '') ,
            字段说明 = ISNULL(g.[value], '')
    FROM    syscolumns a
            LEFT  JOIN systypes b
            ON a.xtype = b.xusertype
            INNER  JOIN sysobjects d
            ON a.id = d.id
               AND d.xtype = 'U'
               AND d.name <> 'dtproperties'
            LEFT  JOIN syscomments e
            ON a.cdefault = e.id
            LEFT  JOIN sys.extended_properties g
            ON a.id = g.major_id
               AND a.colid = g.minor_id
            LEFT  JOIN sys.extended_properties f
            ON d.id = f.major_id
               AND f.minor_id = 0
    WHERE   d.name = @tableName
    ORDER BY a.id ,
            a.colorder

    我们新建表字段的时候顺带说明当前字段是什么意思,如下图

    字典说明写好后我们调用之前写好的存储过程,

    --调用存储过程
    EXEC dbo.sp_tableDict @tableName = 'tblApplicationAcceptance' --指定表

    效果如下:

    这样我们就无需建立数据字典,只需要写好字典说明即可。

    对于别人写好了说明,没有数据字典的小伙伴们也可以直接进行字段意义查看哦。

    当然,做为一个合格的程序员,设计文档和数据字典是必须的,我们要为后来者节省时间,更容易理解数据结构。

    欢迎关注订阅我的微信公众平台【熊泽有话说】,更多好玩易学知识等你来取
    作者:熊泽-学习中的苦与乐
    公众号:熊泽有话说
    出处:https://www.cnblogs.com/xiongze520/p/10265821.html
    创作不易,任何人或团体、机构全部转载或者部分转载、摘录,请在文章明显位置注明作者和原文链接。  

     

  • 相关阅读:
    [php代码]从svn获取指定版本,并同步到ftp上。
    java程序用pid重启
    Gearman安装,测试笔记
    ant编译android项目
    jquery代码收藏
    [读书笔记]读《code complete》有感
    无法解析的外部符号_main,该符号在函数_tmainCRTStartup中被引用
    4路电梯调度——pair program总结
    阅读作业2
    必应缤纷桌面的使用测试
  • 原文地址:https://www.cnblogs.com/xiongze520/p/10265821.html
Copyright © 2011-2022 走看看