Answered by:
Arithmetic overflow error converting numeric to data type numeric.

Question
-
Declare @Number Numeric(5,2)=0.2500
Declare @pagebreak INT =500
Declare @result Numeric(5,2)Select @result= @pagebreak/@Number
I increased the @result datatype value , still i am getting error
Msg 8115, Level 16, State 8, Line 6
Arithmetic overflow error converting numeric to data type numeric.
Tuesday, November 5, 2013 12:19 PM
Answers
-
Because SQL Server tries to convert the highest data type precedence (numeric)
select 500/0.2500
select cast(2000.000000 as decimal(5,2))-error
Best Regards,Uri Dimant SQL Server MVP, http://sqlblog.com/blogs/uri_dimant/
MS SQL optimization: MS SQL Development and Optimization
MS SQL Consulting: Large scale of database and data cleansing
Remote DBA Services: Improves MS SQL Database Performance
SQL Server Integration Services: Business Intelligence
- Proposed as answer by Allen Li - MSFT Wednesday, November 6, 2013 6:33 AM
- Marked as answer by Allen Li - MSFT Thursday, November 14, 2013 1:12 PM
Tuesday, November 5, 2013 12:36 PMAnswerer -
Declare @Number Numeric(5,2)=0.2500
Declare @pagebreak INT =500
Declare @result Numeric(5,2)Select @result= @pagebreak/@Number
I increased the @result datatype value , still i am getting error
Msg 8115, Level 16, State 8, Line 6
Arithmetic overflow error converting numeric to data type numeric.
The result of this calculation is 2000 but the @result variable is only numeric(5,2), allowing a max value of 999.99. You need to increase to (at least) numeric(6,2).
Dan Guzman, SQL Server MVP, http://www.dbdelta.com
- Proposed as answer by Allen Li - MSFT Wednesday, November 6, 2013 6:33 AM
- Marked as answer by Allen Li - MSFT Thursday, November 14, 2013 1:12 PM
Tuesday, November 5, 2013 12:52 PM
All replies
-
Because SQL Server tries to convert the highest data type precedence (numeric)
select 500/0.2500
select cast(2000.000000 as decimal(5,2))-error
Best Regards,Uri Dimant SQL Server MVP, http://sqlblog.com/blogs/uri_dimant/
MS SQL optimization: MS SQL Development and Optimization
MS SQL Consulting: Large scale of database and data cleansing
Remote DBA Services: Improves MS SQL Database Performance
SQL Server Integration Services: Business Intelligence
- Proposed as answer by Allen Li - MSFT Wednesday, November 6, 2013 6:33 AM
- Marked as answer by Allen Li - MSFT Thursday, November 14, 2013 1:12 PM
Tuesday, November 5, 2013 12:36 PMAnswerer -
Marimuthu,
As per your declaration for result variable, oly 3 digits available for result before the decimal point while the answer for the calculation is 4 digits long (2000 s the answer)
Hence modify the declaration for result:
declare @result numeric(7,2) -- means, 2 digits after decimal point(scale) --and 7-2=5 digits before decimal point..
This shud solve the problem..
Thanks,
JK
<Please mark as 'answered' if this answers your query> <Please mark as 'helpful' if this was helpful to your query>Tuesday, November 5, 2013 12:38 PM -
To workaround
Declare @Number decimal(5,2)=0.2500
Declare @pagebreak INT =500
Declare @result decimal(18,3)
Select @result= @pagebreak/@Number
select @resultBest Regards,Uri Dimant SQL Server MVP, http://sqlblog.com/blogs/uri_dimant/
MS SQL optimization: MS SQL Development and Optimization
MS SQL Consulting: Large scale of database and data cleansing
Remote DBA Services: Improves MS SQL Database Performance
SQL Server Integration Services: Business Intelligence
Tuesday, November 5, 2013 12:39 PMAnswerer -
Declare @Number Numeric(5,2)=0.2500
Declare @pagebreak INT =500
Declare @result Numeric(5,2)Select @result= @pagebreak/@Number
I increased the @result datatype value , still i am getting error
Msg 8115, Level 16, State 8, Line 6
Arithmetic overflow error converting numeric to data type numeric.
The result of this calculation is 2000 but the @result variable is only numeric(5,2), allowing a max value of 999.99. You need to increase to (at least) numeric(6,2).
Dan Guzman, SQL Server MVP, http://www.dbdelta.com
- Proposed as answer by Allen Li - MSFT Wednesday, November 6, 2013 6:33 AM
- Marked as answer by Allen Li - MSFT Thursday, November 14, 2013 1:12 PM
Tuesday, November 5, 2013 12:52 PM