sql批量生成showdocs資料字典的md文件
阿新 • • 發佈:2020-12-03
-- sql批量生成showdocs資料字典的md文件 --批量獲取表備註 -- 表名,替換成需要的表名 DECLARE @TableList TABLE (ID INT IDENTITY(1,1), TableName NVARCHAR(256)) INSERT INTO @TableList(TableName)VALUES ('CompanyCertifyDatas'), ('CompanyXCXRegistrationDatas'), ('CompanyXCXRegistrationTracks'), ('CompanyXCXRegistrationWeixinLogs'), ('WeixinOpenReturnCodes') CREATE TABLE #FieldDescripts ( FieldName NVARCHAR(MAX), PrimaryKey NVARCHAR(MAX), DataType NVARCHAR(MAX), FieldLength NVARCHAR(MAX), NeedNull NVARCHAR(MAX), DefaultValue NVARCHAR(MAX), Description NVARCHAR(MAX) ) DECLARE @Count INT=(SELECT COUNT(1) FROM @TableList) DECLARE @ID INT=1 WHILE @ID<=@Count BEGIN DECLARE @TableName NVARCHAR(MAX)=(SELECT TableName FROM @TableList WHERE ID=@ID) DECLARE @TableDescription NVARCHAR(MAX) SELECT TOP(1) @TableDescription=ISNULL(CONVERT(NVARCHAR(MAX),g.[value]),'') FROM sys.tables a left join sys.extended_properties g ON (a.object_id = g.major_id AND g.minor_id = 0) WHERE a.name=@TableName INSERT INTO #FieldDescripts VALUES('# '+@TableName,'','','','','','') INSERT INTO #FieldDescripts VALUES('- ' + @TableDescription,'','','','','','') INSERT INTO #FieldDescripts VALUES('','','','','','','') INSERT INTO #FieldDescripts VALUES('|欄位名','|主鍵','| 型別','| 長度','| 允許空','| 預設值','| 欄位說明|') INSERT INTO #FieldDescripts VALUES('|:-------','|:-------','|:-------','|:-------','|:-------','|:-------','|:-------|') INSERT INTO #FieldDescripts SELECT 欄位名 = '|' + a.name , 主鍵 = '|' + case when exists(SELECT 1 FROM sysobjects where xtype='PK' and parent_obj=a.id 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, 長度 = '|' + CONVERT(NVARCHAR(MAX),COLUMNPROPERTY(a.id,a.name,'PRECISION')), 允許空 = '|' + case when a.isnullable=1 then '√' else '×' end, 預設值 = '|' + ISNULL(e.text,''), 欄位說明 = '|' + CONVERT(NVARCHAR(MAX),ISNULL(g.[value],'')) + '|' FROM syscolumns a left join systypes b on a.xusertype=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 INSERT INTO #FieldDescripts VALUES('','','','','','','') INSERT INTO #FieldDescripts VALUES('','','','','','','') SET @ID=@ID+1 END SELECT * FROM #FieldDescripts DROP TABLE #FieldDescripts