|
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