Created
June 28, 2020 12:18
-
-
Save wcypierre/e19f2f99a130a7d82b123a88d6fa97c3 to your computer and use it in GitHub Desktop.
Revisions
-
wcypierre created this gist
Jun 28, 2020 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,75 @@ /****** Object: UserDefinedFunction [dbo].[Fn_GetDatatypeString] Script Date: 6/28/2020 6:49:21 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUNCTION [dbo].[Fn_GetDatatypeString] ( @INFORMATION_SCHEMA_DATA_TYPE NVARCHAR(MAX), @INFORMATION_SCHEMA_CHARACTER_MAXIMUM_LENGTH NVARCHAR(MAX), @INFORMATION_SCHEMA_NUMERIC_PRECISION NVARCHAR(MAX), @INFORMATION_SCHEMA_NUMERIC_SCALE NVARCHAR(MAX), @INFORMATION_SCHEMA_DATETIME_PRECISION NVARCHAR(MAX) ) RETURNS NVARCHAR(MAX) AS BEGIN DECLARE @DATATYPE_STRING NVARCHAR(MAX); /* Types without size */ IF @INFORMATION_SCHEMA_DATA_TYPE = 'int' OR @INFORMATION_SCHEMA_DATA_TYPE = 'bigint' OR @INFORMATION_SCHEMA_DATA_TYPE = 'bit' OR @INFORMATION_SCHEMA_DATA_TYPE = 'date' OR @INFORMATION_SCHEMA_DATA_TYPE = 'datetime' OR @INFORMATION_SCHEMA_DATA_TYPE = 'float' OR @INFORMATION_SCHEMA_DATA_TYPE = 'geography' OR @INFORMATION_SCHEMA_DATA_TYPE = 'geometry' OR @INFORMATION_SCHEMA_DATA_TYPE = 'hierarchyid' OR @INFORMATION_SCHEMA_DATA_TYPE = 'image' OR @INFORMATION_SCHEMA_DATA_TYPE = 'money' OR @INFORMATION_SCHEMA_DATA_TYPE = 'ntext' OR @INFORMATION_SCHEMA_DATA_TYPE = 'real' OR @INFORMATION_SCHEMA_DATA_TYPE = 'smalldatetime' OR @INFORMATION_SCHEMA_DATA_TYPE = 'smallint' OR @INFORMATION_SCHEMA_DATA_TYPE = 'smallmoney' OR @INFORMATION_SCHEMA_DATA_TYPE = 'sql_variant' OR @INFORMATION_SCHEMA_DATA_TYPE = 'text' OR @INFORMATION_SCHEMA_DATA_TYPE = 'timestamp' OR @INFORMATION_SCHEMA_DATA_TYPE = 'tinyint' OR @INFORMATION_SCHEMA_DATA_TYPE = 'uniqueidentifier' OR @INFORMATION_SCHEMA_DATA_TYPE = 'xml' BEGIN SET @DATATYPE_STRING = @INFORMATION_SCHEMA_DATA_TYPE; END /* Decimal/Money related - Precision + Scale */ ELSE IF @INFORMATION_SCHEMA_DATA_TYPE = 'decimal' OR @INFORMATION_SCHEMA_DATA_TYPE = 'numeric' BEGIN SET @DATATYPE_STRING = @INFORMATION_SCHEMA_DATA_TYPE + '(' + @INFORMATION_SCHEMA_NUMERIC_PRECISION + ',' + @INFORMATION_SCHEMA_NUMERIC_SCALE + ')'; END /* Date/Time related - Precision */ ELSE IF @INFORMATION_SCHEMA_DATA_TYPE = 'datetime2' OR @INFORMATION_SCHEMA_DATA_TYPE = 'datetimeoffset' OR @INFORMATION_SCHEMA_DATA_TYPE = 'time' BEGIN SET @DATATYPE_STRING = @INFORMATION_SCHEMA_DATA_TYPE + '(' + @INFORMATION_SCHEMA_DATETIME_PRECISION + ')'; END ELSE BEGIN IF @INFORMATION_SCHEMA_CHARACTER_MAXIMUM_LENGTH = -1 BEGIN SET @DATATYPE_STRING = @INFORMATION_SCHEMA_DATA_TYPE + '(max)'; END ELSE BEGIN SET @DATATYPE_STRING = @INFORMATION_SCHEMA_DATA_TYPE + '('+ @INFORMATION_SCHEMA_CHARACTER_MAXIMUM_LENGTH +')'; END END RETURN @DATATYPE_STRING END GO