“ SQLServer存储过程应用一:自制数据字典。”
我们开发中接手别人的代码,遇到没注释、没字段说明、没字典释语的就很头疼,每段代码的逻辑思维、应用场景、表示内容都不清楚,需要跟踪代码一段一段的调试,很费时费力,有的数据表有100多字段,靠猜是不靠谱的,我们平时写的时候也要养成良好的编码习惯。
基于SqlServer存储过程的应用,我们来制作一个查询数据字典的方法,可以快速查询数据库数据字典。
01
—
编写存储过程
不会编写的小伙伴可以去看一下之前的文章,我们有介绍怎么编写,或者直接复制下面的存储过程执行即可。
记住,拷贝以后需要先执行创建存储过程。
/****** Object: StoredProcedure [dbo].[sp_tableDict] author:熊泽 Script Date: 2021/4/14 16:25:49 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO--调用方式:EXEC dbo.sp_tableDict 'a_Students' --a_Students 是数据表名称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'ASSELECT 表名 = CASE WHEN a.colorder = 1 THEN d.nameELSE ''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 1FROM sysobjectsWHERE xtype = 'PK'AND name IN ( SELECT nameFROM sysindexesWHERE indid IN ( SELECT indidFROM sysindexkeysWHERE id = a.idAND 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 aLEFT JOIN systypes bON a.xtype = b.xusertypeINNER JOIN sysobjects dON a.id = d.idAND d.xtype = 'U'AND d.name <> 'dtproperties'LEFT JOIN syscomments eON a.cdefault = e.idLEFT JOIN sys.extended_properties gON a.id = g.major_idAND a.colid = g.minor_idLEFT JOIN sys.extended_properties fON d.id = f.major_idAND f.minor_id = 0WHERE d.name = @tableNameORDER BY a.id ,a.colorder
02
—
调用存储过程
创建完后就可以直接调用了。
--执行存储过程查看表字段说明EXEC dbo.sp_tableDict 'a_Students' --a_Students 是数据表名称
调用后显示如下图:

注意,这里有个前提,表字段说明需要创建表的时候一同创建,如下:

SQLServer存储过程应用一:自制数据字典我们就介绍到这里吧,拜拜!
文章转载自熊泽有话说,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




