forked from tSQLt-org/tSQLt
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtSQLt.Private_GetFullTypeName.sfn.sql
More file actions
29 lines (29 loc) · 1.38 KB
/
Copy pathtSQLt.Private_GetFullTypeName.sfn.sql
File metadata and controls
29 lines (29 loc) · 1.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
IF OBJECT_ID('tSQLt.Private_GetFullTypeName') IS NOT NULL DROP FUNCTION tSQLt.Private_GetFullTypeName;
---Build+
GO
CREATE FUNCTION tSQLt.Private_GetFullTypeName(@TypeId INT, @Length INT, @Precision INT, @Scale INT, @CollationName NVARCHAR(MAX))
RETURNS TABLE
AS
RETURN SELECT X.SchemaName + '.' + X.Name + X.Suffix + X.Collation AS TypeName, X.SchemaName, X.Name, X.Suffix, X.is_table_type AS IsTableType
FROM(
SELECT QUOTENAME(SCHEMA_NAME(T.schema_id)) SchemaName, QUOTENAME(T.name) Name,
CASE WHEN T.max_length = -1
THEN ''
WHEN @Length = -1
THEN '(MAX)'
WHEN T.name LIKE 'n%char'
THEN '(' + CAST(@Length / 2 AS NVARCHAR) + ')'
WHEN T.name LIKE '%char' OR T.name LIKE '%binary'
THEN '(' + CAST(@Length AS NVARCHAR) + ')'
WHEN T.name IN ('decimal', 'numeric')
THEN '(' + CAST(@Precision AS NVARCHAR) + ',' + CAST(@Scale AS NVARCHAR) + ')'
ELSE ''
END Suffix,
CASE WHEN @CollationName IS NULL OR T.is_user_defined = 1 THEN ''
ELSE ' COLLATE ' + @CollationName
END Collation,
T.is_table_type
FROM tSQLt.Private_SysTypes AS T WHERE T.user_type_id = @TypeId
)X;
---Build-
GO