Click here to monitor SSC
SQLServerCentral is supported by Red Gate Software Ltd.
 
Log in  ::  Register  ::  Not logged in
 
 
 
        
Home       Members    Calendar    Who's On


Add to briefcase

float to decimal Expand / Collapse
Author
Message
Posted Monday, January 28, 2013 11:55 AM
Grasshopper

GrasshopperGrasshopperGrasshopperGrasshopperGrasshopperGrasshopperGrasshopperGrasshopper

Group: General Forum Members
Last Login: Monday, July 7, 2014 3:51 PM
Points: 11, Visits: 166
Hi I have SQL Server 2000 - 8.00.2066 (Intel X86)
Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 3)
with a Java Application (1.5)

I have a sqlserver.jdbc.SQLServerException:
Error converting data type float to decimal from a stored procedure.

So, I needed to increase the max size in the column, so I increased the column from 8,2 to 9,2 with a

ALTER COLUMN [total_m] [decimal](9, 2) NOT NULL

That works, now with SQL, I can insert a value of 1,000,000.00 into this column. doubleValue() should hold the million.

When the application runs, it uses a stored procedure to insert the data
HOWEVER the save FAILS with the
Error converting data type float to decimal from a stored procedure.

Here is the basics of the stored procedure :
(I scaled this down to the relevant info:)

qq_SQL = "{? = call usp_temp_ins(? )}";
qq_call = this.getTheDBSession().getCallableStatement(qq_SQL);
qq_call.registerOutParameter(1, Types.INTEGER);
--// handle return codes
qq_call.registerOutParameter(2, java.sql.Types.INTEGER);
qq_call.registerOutParameter(3, java.sql.Types.INTEGER);
qq_call.registerOutParameter(4, java.sql.Types.INTEGER);
--
if (((Temp)p_Tempp.getObject()).getTotal_m() == null)
qq_call.setNull(1, Types.DOUBLE);

else
qq_call.setDouble(1, ((Temp)p_Temp.getObject()).getTotal_m().doubleValue());

qq_call.execute();
((Temp)p_Temp.getObject()).setM_id(qq_call.getInt(2));
row_count = qq_call.getInt(3);
ret_code = qq_call.getInt(4);
qq_RowCount = (DataValue)FrameworkUtils.mapToDataValue(qq_call.getObject(1));
}

Any suggestions very much appreciated.




Post #1412589
Posted Monday, January 28, 2013 1:19 PM


Hall of Fame

Hall of FameHall of FameHall of FameHall of FameHall of FameHall of FameHall of FameHall of FameHall of Fame

Group: General Forum Members
Last Login: Monday, July 14, 2014 2:06 PM
Points: 3,860, Visits: 7,130
Seems to be more of an issue with the precision you are setting with your decimal data type i.e. (9,2) - determine the maximum number of decimal places in the float column, then increase the precision to match that number

______________________________________________________________________________
"Never argue with an idiot; They'll drag you down to their level and beat you with experience"
Post #1412624
Posted Wednesday, January 30, 2013 12:09 PM
Grasshopper

GrasshopperGrasshopperGrasshopperGrasshopperGrasshopperGrasshopperGrasshopperGrasshopper

Group: General Forum Members
Last Login: Monday, July 7, 2014 3:51 PM
Points: 11, Visits: 166
It turns out I was looked at the wrong stored procedure

After I altered the correct stored procedure to match the table alter it worked fine.

Thanks for the help !
Post #1413737
« Prev Topic | Next Topic »

Add to briefcase

Permissions Expand / Collapse