@@ -169,27 +169,31 @@ BEGIN
169169 ,CASE
170170 WHEN TYPE_NAME([user_type_id]) IN (N''decimal'',N''numeric'')
171171 THEN CONCAT(N''('',CAST(precision AS varchar(5)), N'','',CAST(scale AS varchar(5)), N'')'')
172- WHEN TYPE_NAME([user_type_id]) IN (''varchar'', ''char'')
173- THEN QUOTENAME(CAST([max_length] AS VARCHAR(10)), ''('')
172+ WHEN TYPE_NAME([user_type_id]) IN (''varchar'', ''char'', ''varbinary'')
173+ THEN CASE
174+ WHEN [max_length] = -1
175+ THEN N''(MAX)''
176+ ELSE QUOTENAME(CAST([max_length] AS VARCHAR(10)), ''('')
177+ END
174178 WHEN TYPE_NAME([user_type_id]) IN (N''time'',N''datetime2'',N''datetimeoffset'')
175179 THEN QUOTENAME(CAST(scale AS varchar(5)), ''('')
176180 WHEN TYPE_NAME([user_type_id]) in (N''float'')
177181 THEN CASE
178- WHEN [c].precision = 53
179- THEN N''''
180- ELSE CONCAT(N''('',CAST([c].precision AS varchar(5)),N'')'')
181- END
182+ WHEN [c].precision = 53
183+ THEN N''''
184+ ELSE CONCAT(N''('',CAST([c].precision AS varchar(5)),N'')'')
185+ END
182186 WHEN TYPE_NAME([c].user_type_id) IN (N''int'',N''bigint'',N''smallint'',N''tinyint'',N''money'',N''smallmoney'',
183187 N''real'',N''datetime'',N''smalldatetime'',N''bit'',N''image'',N''text'',N''uniqueidentifier'',
184188 N''date'',N''ntext'',N''sql_variant'',N''hierarchyid'',''geography'',N''timestamp'',N''xml'')
185189 THEN N''''
186- ELSE CASE
187- WHEN [max_length] = -1
188- THEN N''(MAX)''
189- WHEN TYPE_NAME([user_type_id]) IN (N''nvarchar'',N''nchar'')
190- THEN QUOTENAME(CAST([max_length]/2 AS VARCHAR(10)), ''('')
191- ELSE QUOTENAME(CAST([max_length] AS VARCHAR(10)), ''('')
190+ WHEN TYPE_NAME([user_type_id]) IN (N''nvarchar'',N''nchar'')
191+ THEN CASE
192+ WHEN [max_length] = -1
193+ THEN N''(MAX)''
194+ ELSE QUOTENAME(CAST([max_length]/2 AS VARCHAR(10)), ''('')
192195 END
196+ ELSE QUOTENAME(CAST([max_length] AS VARCHAR(10)), ''('')
193197 END)
194198 ,'' | ''
195199 ,CASE [c].[is_nullable]
@@ -372,29 +376,33 @@ BEGIN
372376 ,'' | ''
373377 ,CONCAT(UPPER(TYPE_NAME([user_type_id]))
374378 ,CASE
375- WHEN TYPE_NAME([user_type_id]) IN (N''decimal'',N''numeric'')
376- THEN CONCAT(N''('',CAST(precision AS varchar(5)), N'','',CAST(scale AS varchar(5)), N'')'')
377- WHEN TYPE_NAME([user_type_id]) IN (''varchar'', ''char'')
378- THEN QUOTENAME(CAST([max_length] AS VARCHAR(10)), ''('')
379- WHEN TYPE_NAME([user_type_id]) IN (N''time'',N''datetime2'',N''datetimeoffset'')
380- THEN QUOTENAME(CAST(scale AS varchar(5)), ''('')
381- WHEN TYPE_NAME([user_type_id]) in (N''float'')
382- THEN CASE
379+ WHEN TYPE_NAME([user_type_id]) IN (N''decimal'',N''numeric'')
380+ THEN CONCAT(N''('',CAST(precision AS varchar(5)), N'','',CAST(scale AS varchar(5)), N'')'')
381+ WHEN TYPE_NAME([user_type_id]) IN (''varchar'', ''char'', ''varbinary'')
382+ THEN CASE
383+ WHEN [max_length] = -1
384+ THEN N''(MAX)''
385+ ELSE QUOTENAME(CAST([max_length] AS VARCHAR(10)), ''('')
386+ END
387+ WHEN TYPE_NAME([user_type_id]) IN (N''time'',N''datetime2'',N''datetimeoffset'')
388+ THEN QUOTENAME(CAST(scale AS varchar(5)), ''('')
389+ WHEN TYPE_NAME([user_type_id]) in (N''float'')
390+ THEN CASE
383391 WHEN [c].precision = 53
384392 THEN N''''
385393 ELSE CONCAT(N''('',CAST([c].precision AS varchar(5)),N'')'')
386394 END
387- WHEN TYPE_NAME([c].user_type_id) IN (N''int'',N''bigint'',N''smallint'',N''tinyint'',N''money'',N''smallmoney'',
388- N''real'',N''datetime'',N''smalldatetime'',N''bit'',N''image'',N''text'',N''uniqueidentifier'',
389- N''date'',N''ntext'',N''sql_variant'',N''hierarchyid'',''geography'',N''timestamp'',N''xml'')
390- THEN N''''
391- ELSE CASE
395+ WHEN TYPE_NAME([c].user_type_id) IN (N''int'',N''bigint'',N''smallint'',N''tinyint'',N''money'',N''smallmoney'',
396+ N''real'',N''datetime'',N''smalldatetime'',N''bit'',N''image'',N''text'',N''uniqueidentifier'',
397+ N''date'',N''ntext'',N''sql_variant'',N''hierarchyid'',''geography'',N''timestamp'',N''xml'')
398+ THEN N''''
399+ WHEN TYPE_NAME([user_type_id]) IN (N''nvarchar'',N''nchar'')
400+ THEN CASE
392401 WHEN [max_length] = -1
393- THEN N''(MAX)''
394- WHEN TYPE_NAME([user_type_id]) IN (N''nvarchar'',N''nchar'')
395- THEN QUOTENAME(CAST([max_length]/2 AS VARCHAR(10)), ''('')
396- ELSE QUOTENAME(CAST([max_length] AS VARCHAR(10)), ''('')
397- END
402+ THEN N''(MAX)''
403+ ELSE QUOTENAME(CAST([max_length]/2 AS VARCHAR(10)), ''('')
404+ END
405+ ELSE QUOTENAME(CAST([max_length] AS VARCHAR(10)), ''('')
398406 END)
399407 ,'' | ''
400408 ,CASE [c].[is_nullable]
@@ -498,28 +506,31 @@ BEGIN
498506 ,CASE
499507 WHEN TYPE_NAME([user_type_id]) IN (N''decimal'',N''numeric'')
500508 THEN CONCAT(N''('',CAST(precision AS varchar(5)), N'','',CAST(scale AS varchar(5)), N'')'')
501- WHEN TYPE_NAME([user_type_id]) IN (''varchar'', ''char'')
502- THEN QUOTENAME(CAST([max_length] AS VARCHAR(10)), ''('')
509+ WHEN TYPE_NAME([user_type_id]) IN (''varchar'', ''char'', ''varbinary'')
510+ THEN CASE
511+ WHEN [max_length] = -1
512+ THEN N''(MAX)''
513+ ELSE QUOTENAME(CAST([max_length] AS VARCHAR(10)), ''('')
514+ END
503515 WHEN TYPE_NAME([user_type_id]) IN (N''time'',N''datetime2'',N''datetimeoffset'')
504516 THEN QUOTENAME(CAST(scale AS varchar(5)), ''('')
505517 WHEN TYPE_NAME([user_type_id]) in (N''float'')
506518 THEN CASE
507- WHEN precision = 53
508- THEN N''''
509- ELSE QUOTENAME(CAST(precision AS varchar(5)),''('') END
510- WHEN TYPE_NAME([user_type_id]) IN (N''int'',N''bigint'',N''smallint'',N''tinyint'',N''money'',N''smallmoney'',
519+ WHEN [param].precision = 53
520+ THEN N''''
521+ ELSE CONCAT(N''('',CAST([param].precision AS varchar(5)),N'')'')
522+ END
523+ WHEN TYPE_NAME([param].user_type_id) IN (N''int'',N''bigint'',N''smallint'',N''tinyint'',N''money'',N''smallmoney'',
511524 N''real'',N''datetime'',N''smalldatetime'',N''bit'',N''image'',N''text'',N''uniqueidentifier'',
512- N''date'',N''ntext'',N''sql_variant'',N''hierarchyid'',''geography'',N''timestamp'',N''xml'')
525+ N''date'',N''ntext'',N''sql_variant'',N''hierarchyid'',''geography'',N''timestamp'',N''xml'') OR [is_readonly] = 1
513526 THEN N''''
514- ELSE CASE
515- WHEN [is_readonly] = 1 --User defined table type
516- THEN N''''
517- WHEN [max_length] = -1
518- THEN N''(MAX)''
519- WHEN TYPE_NAME([user_type_id]) IN (N''nvarchar'',N''nchar'')
520- THEN QUOTENAME(CAST([max_length]/2 AS VARCHAR(10)), ''('')
521- ELSE QUOTENAME(CAST([max_length] AS VARCHAR(10)), ''('')
527+ WHEN TYPE_NAME([user_type_id]) IN (N''nvarchar'',N''nchar'')
528+ THEN CASE
529+ WHEN [max_length] = -1
530+ THEN N''(MAX)''
531+ ELSE QUOTENAME(CAST([max_length]/2 AS VARCHAR(10)), ''('')
522532 END
533+ ELSE QUOTENAME(CAST([max_length] AS VARCHAR(10)), ''('')
523534 END)
524535 ,'' | ''
525536 ,CASE [is_output]
@@ -621,31 +632,34 @@ BEGIN
621632 select CONCAT(''| '', CASE WHEN LEN([param].[name]) = 0 THEN ''*Output*'' ELSE [param].[name] END
622633 ,'' | ''
623634 ,CONCAT(UPPER(TYPE_NAME([user_type_id]))
624- ,CASE
635+ ,CASE
625636 WHEN TYPE_NAME([user_type_id]) IN (N''decimal'',N''numeric'')
626637 THEN CONCAT(N''('',CAST(precision AS varchar(5)), N'','',CAST(scale AS varchar(5)), N'')'')
627- WHEN TYPE_NAME([user_type_id]) IN (''varchar'', ''char'')
628- THEN QUOTENAME(CAST([max_length] AS VARCHAR(10)), ''('')
638+ WHEN TYPE_NAME([user_type_id]) IN (''varchar'', ''char'', ''varbinary'')
639+ THEN CASE
640+ WHEN [max_length] = -1
641+ THEN N''(MAX)''
642+ ELSE QUOTENAME(CAST([max_length] AS VARCHAR(10)), ''('')
643+ END
629644 WHEN TYPE_NAME([user_type_id]) IN (N''time'',N''datetime2'',N''datetimeoffset'')
630645 THEN QUOTENAME(CAST(scale AS varchar(5)), ''('')
631646 WHEN TYPE_NAME([user_type_id]) in (N''float'')
632647 THEN CASE
633- WHEN precision = 53
634- THEN N''''
635- ELSE QUOTENAME(CAST(precision AS varchar(5)),''('') END
636- WHEN TYPE_NAME([user_type_id]) IN (N''int'',N''bigint'',N''smallint'',N''tinyint'',N''money'',N''smallmoney'',
648+ WHEN [param].precision = 53
649+ THEN N''''
650+ ELSE CONCAT(N''('',CAST([param].precision AS varchar(5)),N'')'')
651+ END
652+ WHEN TYPE_NAME([param].user_type_id) IN (N''int'',N''bigint'',N''smallint'',N''tinyint'',N''money'',N''smallmoney'',
637653 N''real'',N''datetime'',N''smalldatetime'',N''bit'',N''image'',N''text'',N''uniqueidentifier'',
638- N''date'',N''ntext'',N''sql_variant'',N''hierarchyid'',''geography'',N''timestamp'',N''xml'')
654+ N''date'',N''ntext'',N''sql_variant'',N''hierarchyid'',''geography'',N''timestamp'',N''xml'') OR [is_readonly] = 1
639655 THEN N''''
640- ELSE CASE
641- WHEN [is_readonly] = 1 --User defined table type
642- THEN N''''
643- WHEN [max_length] = -1
644- THEN N''(MAX)''
645- WHEN TYPE_NAME([user_type_id]) IN (N''nvarchar'',N''nchar'')
646- THEN QUOTENAME(CAST([max_length]/2 AS VARCHAR(10)), ''('')
647- ELSE QUOTENAME(CAST([max_length] AS VARCHAR(10)), ''('')
656+ WHEN TYPE_NAME([user_type_id]) IN (N''nvarchar'',N''nchar'')
657+ THEN CASE
658+ WHEN [max_length] = -1
659+ THEN N''(MAX)''
660+ ELSE QUOTENAME(CAST([max_length]/2 AS VARCHAR(10)), ''('')
648661 END
662+ ELSE QUOTENAME(CAST([max_length] AS VARCHAR(10)), ''('')
649663 END)
650664 ,'' | ''
651665 ,CASE [is_output]
0 commit comments