Skip to content

Commit a883110

Browse files
committed
clean up variable length case statements
1 parent 086447c commit a883110

File tree

1 file changed

+33
-31
lines changed

1 file changed

+33
-31
lines changed

sp_doc.sql

Lines changed: 33 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ BEGIN
8787
,@ParmDefinition NVARCHAR(500)
8888
,@QuotedDatabaseName SYSNAME
8989
,@Msg NVARCHAR(MAX)
90-
,@LastUpdated NVARCHAR(20) = '2020-06-29';
90+
,@LastUpdated NVARCHAR(20) = '2020-09-18';
9191

9292

9393
-- Find Version
@@ -531,29 +531,30 @@ BEGIN
531531
INSERT INTO #markdown
532532
select CONCAT(''| '', CASE WHEN LEN([param].[name]) = 0 THEN ''*Output*'' ELSE [param].[name] END
533533
,'' | ''
534-
,CONCAT(UPPER(type_name(user_type_id)),
535-
CASE
534+
,CONCAT(UPPER(type_name(user_type_id))
535+
,CASE
536536
WHEN TYPE_NAME(user_type_id) IN (N''decimal'',N''numeric'')
537537
THEN CONCAT(N''('',CAST(precision AS varchar(5)), N'','',CAST(scale AS varchar(5)), N'')'')
538538
WHEN TYPE_NAME(user_type_id) IN (''varchar'', ''char'')
539-
THEN CAST(max_length AS VARCHAR(10))
539+
THEN QUOTENAME(CAST(max_length AS VARCHAR(10)))
540+
WHEN TYPE_NAME(user_type_id) IN (N''nvarchar'',N''nchar'')
541+
THEN QUOTENAME(CAST([max_length]/2 AS VARCHAR(10)), ''('')
540542
WHEN TYPE_NAME(user_type_id) IN (N''time'',N''datetime2'',N''datetimeoffset'')
541-
THEN CONCAT(N''('',CAST(scale AS varchar(5)), N'')'')
543+
THEN QUOTENAME(CAST(scale AS varchar(5)), ''('')
542544
WHEN TYPE_NAME(user_type_id) in (N''float'')
543-
THEN CASE WHEN precision = 53 THEN N'''' ELSE CONCAT(N''('',CAST(precision AS varchar(5)),N'')'') END
545+
THEN CASE
546+
WHEN precision = 53
547+
THEN N''''
548+
ELSE QUOTENAME(CAST(precision AS varchar(5)),''('') END
544549
WHEN TYPE_NAME(user_type_id) IN (N''int'',N''bigint'',N''smallint'',N''tinyint'',N''money'',N''smallmoney'',
545550
N''real'',N''datetime'',N''smalldatetime'',N''bit'',N''image'',N''text'',N''uniqueidentifier'',
546551
N''date'',N''ntext'',N''sql_variant'',N''hierarchyid'',''geography'',N''timestamp'',N''xml'')
547552
THEN N''''
548-
ELSE CASE
549-
WHEN [is_readonly] = 1 --User defined table type
550-
THEN N''''
551-
WHEN [max_length] = -1
552-
THEN N''(MAX)''
553-
WHEN TYPE_NAME(user_type_id) IN (N''nvarchar'',N''nchar'')
554-
THEN QUOTENAME(CAST([max_length]/2 AS VARCHAR(10)), ''('')
555-
ELSE QUOTENAME(CAST(max_length AS VARCHAR(10)), ''('')
556-
END
553+
WHEN [is_readonly] = 1 --User defined table type
554+
THEN N''''
555+
WHEN [max_length] = -1 --Max length
556+
THEN N''(MAX)''
557+
ELSE QUOTENAME(CAST(max_length AS VARCHAR(10)), ''('')
557558
END)
558559
,'' | ''
559560
,CASE [is_output]
@@ -654,29 +655,30 @@ BEGIN
654655
INSERT INTO #markdown
655656
select CONCAT(''| '', CASE WHEN LEN([param].[name]) = 0 THEN ''*Output*'' ELSE [param].[name] END
656657
,'' | ''
657-
,CONCAT(UPPER(type_name(user_type_id)),
658-
CASE
658+
,CONCAT(UPPER(type_name(user_type_id))
659+
,CASE
659660
WHEN TYPE_NAME(user_type_id) IN (N''decimal'',N''numeric'')
660661
THEN CONCAT(N''('',CAST(precision AS varchar(5)), N'','',CAST(scale AS varchar(5)), N'')'')
661662
WHEN TYPE_NAME(user_type_id) IN (''varchar'', ''char'')
662-
THEN CAST(max_length AS VARCHAR(10))
663+
THEN QUOTENAME(CAST(max_length AS VARCHAR(10)))
664+
WHEN TYPE_NAME(user_type_id) IN (N''nvarchar'',N''nchar'')
665+
THEN QUOTENAME(CAST([max_length]/2 AS VARCHAR(10)), ''('')
663666
WHEN TYPE_NAME(user_type_id) IN (N''time'',N''datetime2'',N''datetimeoffset'')
664-
THEN CONCAT(N''('',CAST(scale AS varchar(5)), N'')'')
667+
THEN QUOTENAME(CAST(scale AS varchar(5)), ''('')
665668
WHEN TYPE_NAME(user_type_id) in (N''float'')
666-
THEN CASE WHEN precision = 53 THEN N'''' ELSE CONCAT(N''('',CAST(precision AS varchar(5)),N'')'') END
669+
THEN CASE
670+
WHEN precision = 53
671+
THEN N''''
672+
ELSE QUOTENAME(CAST(precision AS varchar(5)),''('') END
667673
WHEN TYPE_NAME(user_type_id) IN (N''int'',N''bigint'',N''smallint'',N''tinyint'',N''money'',N''smallmoney'',
668674
N''real'',N''datetime'',N''smalldatetime'',N''bit'',N''image'',N''text'',N''uniqueidentifier'',
669675
N''date'',N''ntext'',N''sql_variant'',N''hierarchyid'',''geography'',N''timestamp'',N''xml'')
670676
THEN N''''
671-
ELSE CASE
672-
WHEN [is_readonly] = 1 --User defined table type
673-
THEN N''''
674-
WHEN [max_length] = -1
675-
THEN N''(MAX)''
676-
WHEN TYPE_NAME(user_type_id) IN (N''nvarchar'',N''nchar'')
677-
THEN QUOTENAME(CAST([max_length]/2 AS VARCHAR(10)), ''('')
678-
ELSE QUOTENAME(CAST(max_length AS VARCHAR(10)), ''('')
679-
END
677+
WHEN [is_readonly] = 1 --User defined table type
678+
THEN N''''
679+
WHEN [max_length] = -1 --Max length
680+
THEN N''(MAX)''
681+
ELSE QUOTENAME(CAST(max_length AS VARCHAR(10)), ''('')
680682
END)
681683
,'' | ''
682684
,CASE [is_output]
@@ -776,8 +778,8 @@ BEGIN
776778
INSERT INTO #markdown
777779
select CONCAT(''| '', CASE WHEN LEN([param].[name]) = 0 THEN ''*Output*'' ELSE [param].[name] END
778780
,'' | ''
779-
,CONCAT(UPPER(type_name(user_type_id)),
780-
CASE
781+
,CONCAT(UPPER(type_name(user_type_id))
782+
,CASE
781783
WHEN TYPE_NAME(user_type_id) IN (N''decimal'',N''numeric'')
782784
THEN CONCAT(N''('',CAST(precision AS varchar(5)), N'','',CAST(scale AS varchar(5)), N'')'')
783785
WHEN TYPE_NAME(user_type_id) IN (''varchar'', ''char'')

0 commit comments

Comments
 (0)