|
2 | 2 | CREATE PROCEDURE [dbo].[sp_doc]
|
3 | 3 | @DatabaseName SYSNAME = NULL
|
4 | 4 | ,@ExtendedPropertyName SYSNAME = 'Description'
|
5 |
| - /* Parameters defined here for testing only */ |
6 |
| - ,@SqlMajorVersion TINYINT = 0 |
7 |
| - ,@SqlMinorVersion SMALLINT = 0 |
8 |
| -WITH RECOMPILE |
| 5 | + /* Parameters defined here for testing only */ |
| 6 | + ,@SqlMajorVersion TINYINT = 0 |
| 7 | + ,@SqlMinorVersion SMALLINT = 0 |
| 8 | +WITH RECOMPILE |
9 | 9 | AS
|
10 | 10 |
|
11 | 11 | /*
|
@@ -48,13 +48,13 @@ BEGIN
|
48 | 48 |
|
49 | 49 | -- Find Version
|
50 | 50 | IF (@SqlMajorVersion = 0)
|
51 |
| - BEGIN; |
52 |
| - SET @SqlMajorVersion = CAST(SERVERPROPERTY('ProductMajorVersion') AS TINYINT); |
53 |
| - END; |
| 51 | + BEGIN; |
| 52 | + SET @SqlMajorVersion = CAST(SERVERPROPERTY('ProductMajorVersion') AS TINYINT); |
| 53 | + END; |
54 | 54 | IF (@SqlMinorVersion = 0)
|
55 |
| - BEGIN; |
56 |
| - SET @SqlMinorVersion = CAST(SERVERPROPERTY('ProductMinorVersion') AS TINYINT); |
57 |
| - END; |
| 55 | + BEGIN; |
| 56 | + SET @SqlMinorVersion = CAST(SERVERPROPERTY('ProductMinorVersion') AS TINYINT); |
| 57 | + END; |
58 | 58 |
|
59 | 59 | -- Validate Version
|
60 | 60 | IF (@SqlMajorVersion < 11)
|
@@ -106,12 +106,15 @@ BEGIN
|
106 | 106 | /***********************
|
107 | 107 | Generate markdown for tables
|
108 | 108 | ************************/
|
| 109 | + --Build table of contents |
109 | 110 | SET @Sql = @Sql + N'
|
110 |
| - INSERT INTO #markdown (value) |
111 |
| - VALUES (CONCAT(CHAR(13), CHAR(10), ''## Tables'')) |
112 |
| - ,(CONCAT(CHAR(13), CHAR(10), ''<details><summary>Click to expand</summary>'', CHAR(13), CHAR(10)));' + |
| 111 | + IF EXISTS (SELECT 1 FROM [sys].[all_objects] WHERE [type] = ''U'' AND [is_ms_shipped] = 0) |
| 112 | + BEGIN |
| 113 | + INSERT INTO #markdown (value) |
| 114 | + VALUES (CONCAT(CHAR(13), CHAR(10), ''## Tables'')) |
| 115 | + ,(CONCAT(CHAR(13), CHAR(10), ''<details><summary>Click to expand</summary>'', CHAR(13), CHAR(10))); |
| 116 | + END;' + |
113 | 117 |
|
114 |
| - --Build table of contents |
115 | 118 | + N'INSERT INTO #markdown (value)
|
116 | 119 | SELECT CONCAT(''* ['', OBJECT_SCHEMA_NAME(object_id), ''.'', OBJECT_NAME(object_id), ''](#'', LOWER(OBJECT_SCHEMA_NAME(object_id)), LOWER(OBJECT_NAME(object_id)), '')'')
|
117 | 120 | FROM [sys].[all_objects]
|
@@ -163,7 +166,9 @@ BEGIN
|
163 | 166 | THEN CONCAT(N''('',CAST([c].scale AS varchar(5)), N'')'')
|
164 | 167 | WHEN TYPE_NAME([c].user_type_id) in (N''float'')
|
165 | 168 | THEN CASE WHEN [c].precision = 53 THEN N'''' ELSE CONCAT(N''('',CAST([c].precision AS varchar(5)),N'')'') END
|
166 |
| - WHEN TYPE_NAME([c].user_type_id) IN (N''int'',N''bigint'',N''smallint'',N''tinyint'',N''money'',N''smallmoney'',N''real'',N''datetime'',N''smalldatetime'',N''bit'',N''image'',N''text'',N''uniqueidentifier'',N''date'',N''ntext'',N''sql_variant'',N''hierarchyid'',''geography'',N''timestamp'',N''xml'') |
| 169 | + WHEN TYPE_NAME([c].user_type_id) IN (N''int'',N''bigint'',N''smallint'',N''tinyint'',N''money'',N''smallmoney'', |
| 170 | + N''real'',N''datetime'',N''smalldatetime'',N''bit'',N''image'',N''text'',N''uniqueidentifier'', |
| 171 | + N''date'',N''ntext'',N''sql_variant'',N''hierarchyid'',''geography'',N''timestamp'',N''xml'') |
167 | 172 | THEN N''''
|
168 | 173 | ELSE CONCAT(N''('',CASE
|
169 | 174 | WHEN [c].max_length = -1
|
@@ -302,12 +307,14 @@ BEGIN
|
302 | 307 | /***********************
|
303 | 308 | Generate markdown for views
|
304 | 309 | ************************/
|
| 310 | + --Build table of contents |
305 | 311 | SET @Sql = @Sql + N'
|
306 |
| - INSERT INTO #markdown (value) |
307 |
| - VALUES (CONCAT(CHAR(13), CHAR(10), ''## Views'')) |
308 |
| - ,(CONCAT(CHAR(13), CHAR(10), ''<details><summary>Click to expand</summary>'', CHAR(13), CHAR(10)));' + |
| 312 | + IF EXISTS (SELECT 1 FROM [sys].[views] WHERE [is_ms_shipped] = 0) |
| 313 | + BEGIN; |
| 314 | + INSERT INTO #markdown (value) |
| 315 | + VALUES (CONCAT(CHAR(13), CHAR(10), ''## Views'')) ,(CONCAT(CHAR(13), CHAR(10), ''<details><summary>Click to expand</summary>'', CHAR(13), CHAR(10))); |
| 316 | + END;' + |
309 | 317 |
|
310 |
| - --Build table of contents |
311 | 318 | + N'INSERT INTO #markdown (value)
|
312 | 319 | SELECT CONCAT(''* ['', OBJECT_SCHEMA_NAME(object_id), ''.'', OBJECT_NAME(object_id), ''](#'', LOWER(OBJECT_SCHEMA_NAME(object_id)), LOWER(OBJECT_NAME(object_id)), '')'')
|
313 | 320 | FROM [sys].[views]
|
@@ -358,7 +365,9 @@ BEGIN
|
358 | 365 | THEN CONCAT(N''('',CAST([c].scale AS varchar(5)), N'')'')
|
359 | 366 | WHEN TYPE_NAME([c].user_type_id) in (N''float'')
|
360 | 367 | THEN CASE WHEN [c].precision = 53 THEN N'''' ELSE CONCAT(N''('',CAST([c].precision AS varchar(5)),N'')'') END
|
361 |
| - WHEN TYPE_NAME([c].user_type_id) IN (N''int'',N''bigint'',N''smallint'',N''tinyint'',N''money'',N''smallmoney'',N''real'',N''datetime'',N''smalldatetime'',N''bit'',N''image'',N''text'',N''uniqueidentifier'',N''date'',N''ntext'',N''sql_variant'',N''hierarchyid'',''geography'',N''timestamp'',N''xml'') |
| 368 | + WHEN TYPE_NAME([c].user_type_id) IN (N''int'',N''bigint'',N''smallint'',N''tinyint'',N''money'',N''smallmoney'', |
| 369 | + N''real'',N''datetime'',N''smalldatetime'',N''bit'',N''image'',N''text'',N''uniqueidentifier'',N''date'', |
| 370 | + N''ntext'',N''sql_variant'',N''hierarchyid'',''geography'',N''timestamp'',N''xml'') |
362 | 371 | THEN N''''
|
363 | 372 | ELSE CONCAT(N''('',CASE
|
364 | 373 | WHEN [c].max_length = -1
|
@@ -416,12 +425,14 @@ BEGIN
|
416 | 425 | /***********************
|
417 | 426 | Generate markdown for procedures
|
418 | 427 | ************************/
|
| 428 | + --Build table of contents |
419 | 429 | SET @Sql = @Sql + N'
|
420 |
| - INSERT INTO #markdown |
421 |
| - VALUES (CONCAT(CHAR(13), CHAR(10), ''## Stored Procedures'')) |
422 |
| - ,(CONCAT(CHAR(13), CHAR(10), ''<details><summary>Click to expand</summary>'', CHAR(13), CHAR(10)));' + |
| 430 | + IF EXISTS (SELECT 1 FROM [sys].[procedures] WHERE [is_ms_shipped] = 0) |
| 431 | + BEGIN; |
| 432 | + INSERT INTO #markdown |
| 433 | + VALUES (CONCAT(CHAR(13), CHAR(10), ''## Stored Procedures'')) ,(CONCAT(CHAR(13), CHAR(10), ''<details><summary>Click to expand</summary>'', CHAR(13), CHAR(10))); |
| 434 | + END;' + |
423 | 435 |
|
424 |
| - --Build table of contents |
425 | 436 | + N'INSERT INTO #markdown
|
426 | 437 | SELECT CONCAT(''* ['', OBJECT_SCHEMA_NAME([object_id]), ''.'', OBJECT_NAME([object_id]), ''](#'', LOWER(OBJECT_SCHEMA_NAME([object_id])), LOWER(OBJECT_NAME([object_id])), '')'')
|
427 | 438 | FROM [sys].[procedures]
|
@@ -473,7 +484,9 @@ BEGIN
|
473 | 484 | THEN CONCAT(N''('',CAST(scale AS varchar(5)), N'')'')
|
474 | 485 | WHEN TYPE_NAME(user_type_id) in (N''float'')
|
475 | 486 | THEN CASE WHEN precision = 53 THEN N'''' ELSE CONCAT(N''('',CAST(precision AS varchar(5)),N'')'') END
|
476 |
| - WHEN TYPE_NAME(user_type_id) IN (N''int'',N''bigint'',N''smallint'',N''tinyint'',N''money'',N''smallmoney'',N''real'',N''datetime'',N''smalldatetime'',N''bit'',N''image'',N''text'',N''uniqueidentifier'',N''date'',N''ntext'',N''sql_variant'',N''hierarchyid'',''geography'',N''timestamp'',N''xml'') |
| 487 | + WHEN TYPE_NAME(user_type_id) IN (N''int'',N''bigint'',N''smallint'',N''tinyint'',N''money'',N''smallmoney'', |
| 488 | + N''real'',N''datetime'',N''smalldatetime'',N''bit'',N''image'',N''text'',N''uniqueidentifier'', |
| 489 | + N''date'',N''ntext'',N''sql_variant'',N''hierarchyid'',''geography'',N''timestamp'',N''xml'') |
477 | 490 | THEN N''''
|
478 | 491 | ELSE CONCAT(N''('',CASE
|
479 | 492 | WHEN max_length = -1
|
@@ -525,12 +538,14 @@ BEGIN
|
525 | 538 | /***********************
|
526 | 539 | Generate markdown for scalar functions
|
527 | 540 | ************************/
|
| 541 | + --Build table of contents |
528 | 542 | SET @Sql = @Sql + N'
|
529 |
| - INSERT INTO #markdown (value) |
530 |
| - VALUES (CONCAT(CHAR(13), CHAR(10), ''## Scalar Functions'')) |
531 |
| - ,(CONCAT(CHAR(13), CHAR(10), ''<details><summary>Click to expand</summary>'', CHAR(13), CHAR(10)));' + |
| 543 | + IF EXISTS (SELECT 1 FROM [sys].[objects] WHERE [is_ms_shipped] = 0 AND [type] = ''FN'') |
| 544 | + BEGIN; |
| 545 | + INSERT INTO #markdown (value) |
| 546 | + VALUES (CONCAT(CHAR(13), CHAR(10), ''## Scalar Functions'')) ,(CONCAT(CHAR(13), CHAR(10), ''<details><summary>Click to expand</summary>'', CHAR(13), CHAR(10))); |
| 547 | + END;' + |
532 | 548 |
|
533 |
| - --Build table of contents |
534 | 549 | + N'INSERT INTO #markdown
|
535 | 550 | SELECT CONCAT(''* ['', OBJECT_SCHEMA_NAME(object_id), ''.'', OBJECT_NAME(object_id), ''](#'', LOWER(OBJECT_SCHEMA_NAME(object_id)), LOWER(OBJECT_NAME(object_id)), '')'')
|
536 | 551 | FROM [sys].[objects]
|
@@ -585,7 +600,9 @@ BEGIN
|
585 | 600 | THEN CONCAT(N''('',CAST(scale AS varchar(5)), N'')'')
|
586 | 601 | WHEN TYPE_NAME(user_type_id) in (N''float'')
|
587 | 602 | THEN CASE WHEN precision = 53 THEN N'''' ELSE CONCAT(N''('',CAST(precision AS varchar(5)),N'')'') END
|
588 |
| - WHEN TYPE_NAME(user_type_id) IN (N''int'',N''bigint'',N''smallint'',N''tinyint'',N''money'',N''smallmoney'',N''real'',N''datetime'',N''smalldatetime'',N''bit'',N''image'',N''text'',N''uniqueidentifier'',N''date'',N''ntext'',N''sql_variant'',N''hierarchyid'',''geography'',N''timestamp'',N''xml'') |
| 603 | + WHEN TYPE_NAME(user_type_id) IN (N''int'',N''bigint'',N''smallint'',N''tinyint'',N''money'',N''smallmoney'', |
| 604 | + N''real'',N''datetime'',N''smalldatetime'',N''bit'',N''image'',N''text'',N''uniqueidentifier'', |
| 605 | + N''date'',N''ntext'',N''sql_variant'',N''hierarchyid'',''geography'',N''timestamp'',N''xml'') |
589 | 606 | THEN N''''
|
590 | 607 | ELSE CONCAT(N''('',CASE
|
591 | 608 | WHEN max_length = -1
|
@@ -637,12 +654,14 @@ BEGIN
|
637 | 654 | /***********************
|
638 | 655 | Generate markdown for table functions
|
639 | 656 | ************************/
|
| 657 | + --Build table of contents |
640 | 658 | SET @Sql = @Sql + N'
|
641 |
| - INSERT INTO #markdown |
642 |
| - VALUES (CONCAT(CHAR(13), CHAR(10), ''## Table Functions'')) |
643 |
| - ,(CONCAT(CHAR(13), CHAR(10), ''<details><summary>Click to expand</summary>'', CHAR(13), CHAR(10)));' + |
| 659 | + IF EXISTS (SELECT 1 FROM [sys].[objects] WHERE [is_ms_shipped] = 0 AND [type] = ''IF'') |
| 660 | + BEGIN; |
| 661 | + INSERT INTO #markdown |
| 662 | + VALUES (CONCAT(CHAR(13), CHAR(10), ''## Table Functions'')) ,(CONCAT(CHAR(13), CHAR(10), ''<details><summary>Click to expand</summary>'', CHAR(13), CHAR(10))); |
| 663 | + END;' + |
644 | 664 |
|
645 |
| - --Build table of contents |
646 | 665 | + N'INSERT INTO #markdown
|
647 | 666 | SELECT CONCAT(''* ['', OBJECT_SCHEMA_NAME(object_id), ''.'', OBJECT_NAME(object_id), ''](#'', LOWER(OBJECT_SCHEMA_NAME(object_id)), LOWER(OBJECT_NAME(object_id)), '')'')
|
648 | 667 | FROM [sys].[objects]
|
@@ -748,17 +767,19 @@ BEGIN
|
748 | 767 | /***********************
|
749 | 768 | Generate markdown for synonyms
|
750 | 769 | ************************/
|
| 770 | + --Build table of contents |
751 | 771 | SET @Sql = @Sql + N'
|
752 |
| - INSERT INTO #markdown (value) |
753 |
| - VALUES (CONCAT(CHAR(13), CHAR(10), ''## Synonyms'')) |
754 |
| - ,(CONCAT(CHAR(13), CHAR(10), ''<details><summary>Click to expand</summary>''));' + |
| 772 | + IF EXISTS (SELECT 1 FROM [sys].[synonyms] WHERE [is_ms_shipped] = 0) |
| 773 | + BEGIN; |
| 774 | + INSERT INTO #markdown ([value]) |
| 775 | + VALUES (CONCAT(CHAR(13), CHAR(10), ''## Synonyms'')) ,(CONCAT(CHAR(13), CHAR(10), ''<details><summary>Click to expand</summary>'')); |
| 776 | + END;' + |
755 | 777 |
|
756 |
| - --Build table of contents |
757 | 778 | + N'INSERT INTO #markdown
|
758 |
| - SELECT CONCAT(''* ['', OBJECT_SCHEMA_NAME(object_id), ''.'', OBJECT_NAME(object_id), ''](#'', LOWER(OBJECT_SCHEMA_NAME(object_id)), LOWER(OBJECT_NAME(object_id)), '')'') |
759 |
| - FROM sys.synonyms |
760 |
| - WHERE is_ms_shipped = 0 |
761 |
| - ORDER BY OBJECT_SCHEMA_NAME(object_id), [name] ASC;' + |
| 779 | + SELECT CONCAT(''* ['', OBJECT_SCHEMA_NAME([object_id]), ''.'', OBJECT_NAME([object_id]), ''](#'', LOWER(OBJECT_SCHEMA_NAME([object_id])), LOWER(OBJECT_NAME([object_id])), '')'') |
| 780 | + FROM [sys].[synonyms] |
| 781 | + WHERE [is_ms_shipped] = 0 |
| 782 | + ORDER BY OBJECT_SCHEMA_NAME([object_id]), [name] ASC;' + |
762 | 783 |
|
763 | 784 | --Object details
|
764 | 785 | + N'DECLARE Obj_Cursor CURSOR
|
|
0 commit comments