I don't think so.This (stupid) test harness returns troubling results:DECLARE @foo NUMERIC(38,8) = 123123123123123.34231231DECLARE @one NUMERIC(38,8) = 1.00000000 SELECT '1.0000 No Cast' AS [test], CAST((@foo * 1.00000000) AS NUMERIC(38,8)) AS [result]UNION ALL SELECT '1 No Cast', CAST((@foo * 1) AS NUMERIC(38,8))UNION ALL SELECT '1.00000000 AS numeric', CAST((@foo * CAST(1.00000000 AS NUMERIC(38,8))) AS NUMERIC(38,8))UNION ALL SELECT 'No sum + Cast result', CAST(@foo AS NUMERIC(38,8))UNION ALL SELECT 'Vanilla', @fooUNION ALL SELECT '1.00000000 (Cast to Numeric)', CAST(1.00000000 AS NUMERIC(38,8))UNION ALL SELECT '2 Variables', CAST(@foo * @one AS NUMERIC(38,8))
results:test result---------------------------- ---------------------------------------1.0000 No Cast 123123123123123.342312001 No Cast 123123123123123.342312001.00000000 AS numeric 123123123123123.34231200No sum + Cast result 123123123123123.34231231Vanilla 123123123123123.342312311.00000000 (Cast to Numeric) 1.000000002 Variables 123123123123123.34231200
So even when you use a sum of two numerics of 38,8 you seem to get a down cast to 6 places of precision?Server setting?Charlie===============================================================Msg 3903, Level 16, State 1, Line 1736The ROLLBACK TRANSACTION request has no corresponding BEGIN TRANSACTION