Skip to content

Commit c625f2c

Browse files
committed
Using Money Data type check
1 parent b7e7bba commit c625f2c

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

sp_Develop.sql

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2024,7 +2024,46 @@ AS
20242024

20252025
END;
20262026

2027+
/**********************************************************************************************************************/
2028+
SELECT
2029+
@CheckId = 28
2030+
,@Priority = 1
2031+
,@FindingGroup = 'Data Type Conventions'
2032+
,@Finding = 'Using MONEY data type'
2033+
,@URLAnchor = 'using-money-data-type';
2034+
/**********************************************************************************************************************/
2035+
IF NOT EXISTS (SELECT 1 FROM #SkipCheck AS SC WHERE SC.CheckId = @CheckId AND SC.ObjectName IS NULL)
2036+
BEGIN
2037+
IF @Debug IN (1, 2) RAISERROR(N'Running CheckId [%d]', 0, 1, @CheckId) WITH NOWAIT;
2038+
2039+
SET @StringToExecute = N'
2040+
INSERT INTO
2041+
#Finding (CheckId, Database_Id, DatabaseName, FindingGroup, Finding, URL, Priority, Schema_Id, SchemaName, Object_Id, ObjectName, ObjectType, Details)
2042+
SELECT
2043+
CheckId = ' + CAST(@CheckId AS NVARCHAR(MAX)) + N'
2044+
,Database_Id = ' + CAST(@DatabaseId AS NVARCHAR(MAX)) + N'
2045+
,DatabaseName = ''' + CAST(@DatabaseName AS NVARCHAR(MAX)) + N'''
2046+
,FindingGroup = ''' + CAST(@FindingGroup AS NVARCHAR(MAX)) + N'''
2047+
,Finding = ''' + CAST(@Finding AS NVARCHAR(MAX)) + N'''
2048+
,URL = ''' + CAST(@URLBase + @URLAnchor AS NVARCHAR(MAX)) + N'''
2049+
,Priority = ' + CAST(@Priority AS NVARCHAR(MAX)) + N'
2050+
,Schema_Id = S.schema_id
2051+
,SchemaName = S.name
2052+
,Object_Id = O.object_id
2053+
,ObjectName = O.name + ''.'' + C.Name
2054+
,ObjectType = ''COLUMN''
2055+
,Details = N''Column ''+ C.Name + N'' uses the '' + UPPER(t.name) +N'' data type, which has limited precision and can lead to roundoff errors. Consider using Decimal(19.4) instead.''
2056+
FROM
2057+
' + QUOTENAME(@DatabaseName) + N'.sys.objects AS O
2058+
INNER JOIN ' + QUOTENAME(@DatabaseName) + N'.sys.schemas AS S ON S.schema_id = O.schema_id
2059+
INNER JOIN ' + QUOTENAME(@DatabaseName) + N'.sys.columns AS C ON C.object_id = O.object_id
2060+
INNER JOIN ' + QUOTENAME(@DatabaseName) + N'.sys.types AS T on T.user_type_id = C.user_type_id
2061+
WHERE
2062+
t.name IN (''money'', ''smallmoney'');';
20272063

2064+
EXEC sys.sp_executesql @stmt = @StringToExecute;
2065+
IF @Debug = 2 AND @StringToExecute IS NOT NULL PRINT @StringToExecute;
2066+
END;
20282067
-- SQL Prompt formatting on
20292068
/**********************************************************************************************************************
20302069
** ██████ ██  ██ ███████  ██████ ██  ██ ███████  ███████ ███  ██ ██████ 

0 commit comments

Comments
 (0)