1. 程式人生 > >SQLServer存儲過程自制數據字典

SQLServer存儲過程自制數據字典

容易 param 一個 ase 自制 nor left all 當前

相信很多小夥伴都對【數據字典】很頭疼。

小編剛入職的時候,老大丟一個項目過來,就一個設計文檔,數據字典木有,字段說明木有,

全部都需要靠“聯系上下文”來猜。所以小夥伴門一定要養成說明字段的習慣哦。

說明字段後我們無需特意建立數據字典,直接建立一個存儲過程就可以查詢字段意義了。

存儲過程建立如下,小夥伴們直接拷貝執行就行了。

/****** 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 --指定表

效果如下:

技術分享圖片

這樣我們就無需建立數據字典,只需要寫好字典說明即可。

對於別人寫好了說明,沒有數據字典的小夥伴們也可以直接進行字段意義查看哦。

當然,做為一個合格的程序員,設計文檔和數據字典是必須的,我們要為後來者節省時間,更容易理解數據結構。

SQLServer存儲過程自制數據字典