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
創作不易,任何人或團體、機構全部轉載或者部分轉載、摘錄,請在文章明顯位置注明作者和原文鏈接。  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM