经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MS SQL Server » 查看文章
SQLServer存储过程自制数据字典
来源:cnblogs  作者:学习中的苦与乐  时间:2019/1/15 9:30:20  对本文有异议

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

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

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

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

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

  1. /****** Object: StoredProcedure [dbo].[sp_tableDict] Script Date: 2019/1/14 10:49:40 ******/
  2. SET ANSI_NULLS ON
  3. GO
  4. SET QUOTED_IDENTIFIER ON
  5. GO
  6. CREATE PROCEDURE [dbo].[sp_tableDict]
  7. (
  8. @tableName AS VARCHAR(100)
  9. )
  10. --@parameter_name AS scalar_data_type ( = default_value ), ...
  11. -- WITH ENCRYPTION, RECOMPILE, EXECUTE AS CALLER|SELF|OWNER| 'user_name'
  12. AS
  13. SELECT 表名 = CASE WHEN a.colorder = 1 THEN d.name
  14. ELSE ''
  15. END ,
  16. 表说明 = CASE WHEN a.colorder = 1 THEN ISNULL(f.value, '')
  17. ELSE ''
  18. END ,
  19. 字段序号 = a.colorder ,
  20. 字段名 = a.name ,
  21. 标识 = CASE WHEN COLUMNPROPERTY(a.id, a.name, 'IsIdentity') = 1 THEN ''
  22. ELSE ''
  23. END ,
  24. 主键 = CASE WHEN EXISTS ( SELECT 1
  25. FROM sysobjects
  26. WHERE xtype = 'PK'
  27. AND name IN ( SELECT name
  28. FROM sysindexes
  29. WHERE indid IN ( SELECT indid
  30. FROM sysindexkeys
  31. WHERE id = a.id
  32. AND colid = a.colid ) ) ) THEN ''
  33. ELSE ''
  34. END ,
  35. 类型 = b.name ,
  36. 占用字节数 = a.length ,
  37. 长度 = COLUMNPROPERTY(a.id, a.name, 'PRECISION') ,
  38. 小数位数 = ISNULL(COLUMNPROPERTY(a.id, a.name, 'Scale'), 0) ,
  39. 允许空 = CASE WHEN a.isnullable = 1 THEN ''
  40. ELSE ''
  41. END ,
  42. 默认值 = ISNULL(e.text, '') ,
  43. 字段说明 = ISNULL(g.[value], '')
  44. FROM syscolumns a
  45. LEFT JOIN systypes b
  46. ON a.xtype = b.xusertype
  47. INNER JOIN sysobjects d
  48. ON a.id = d.id
  49. AND d.xtype = 'U'
  50. AND d.name <> 'dtproperties'
  51. LEFT JOIN syscomments e
  52. ON a.cdefault = e.id
  53. LEFT JOIN sys.extended_properties g
  54. ON a.id = g.major_id
  55. AND a.colid = g.minor_id
  56. LEFT JOIN sys.extended_properties f
  57. ON d.id = f.major_id
  58. AND f.minor_id = 0
  59. WHERE d.name = @tableName
  60. ORDER BY a.id ,
  61. a.colorder

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

 

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

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

效果如下:

 

 

 

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

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

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

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号