Prashanth Sukumaran <prashanthsukumaran <at> yahoo.com> writes:
>
> Hi Jeff,
>
> I don't know how the scale would work.
>
> As per jdk 1.4 there are 4 constructors to create BigDecimal. The first two
use biginteger, i
> think this will not be a case at BigInteger would not be mapped to Decimal
type field.
>
> The other two use double or string. In both cases the value is 90.94.
>
> BigDecimal bd = new BigDecimal("90.94");
> double dble = 90.94;
> BigDecimal bd2 = new BigDecimal(dble);
> System.out.println("The big decimal value is "+bd);
> System.out.println("The big decimal integer value is "+bd2);
>
> The big decimal value is 90.94
> The big decimal integer value is
90.93999999999999772626324556767940521240234375
>
> i tried setting the scale for example
>
> bd.setScale(1);
>
> Ofcourse there are two decimals but i tried with setScale(1) you would get a
> java.lang.ArithmeticException: Rounding necessary
> at java.math.BigDecimal.divide(BigDecimal.java:465)
> at java.math.BigDecimal.setScale(BigDecimal.java:699)
>
> with setScale(2). Java gives the output as 90.94 which is same without scale.
>
> Shilpa are you sure there is no typo or some problem in the data flow. Are
you coping data from
> one bean to another. Just for kicks why don't you create another field which
is a varchar have
> the data as string 90.94 and in the result map have javaType as BigDecimal
and dataType as
> Varchar.
>
> Also paste the java bean code here and the dao class code that is calling it?
>
> Rgds
>
> Prashanth.
>
> --- Jeff Butler <dhscn06 <at> cstone.dhs.state.il.us> wrote:
>
> > Shilpa,
> >
> > I cannot get this to fail using DB2 version 8.2, fixpack 9a. I have
> > used both the type 2 and type 4 drivers, and I get the correct results
> > in each case (even calling the SP multiple times - works every time).
> >
> > I still believe this is something that should be changed in iBATIS -
> > just to make sure we are following the JDBC spec as closely as possible.
> > But it looks like the DB2 version 8 drivers are fairly robust.
> >
> > Would you please provide some configuration details:
> >
> > 1. DB2 Server Version and platform
> > 2. DB2 Client Version
> > 3. Type of driver you are using
> >
> > I don't have easy access to DB2 version 7 anymore for testing, but that
> > might be part of the problem if you are still on that version. The
> > version 7 driver had some, shall we say, peculiarities.
> >
> > Jeff Butler
> >
> >
>
>
> ____________________________________________________
> Start your day with Yahoo! - make it your home page
> http://www.yahoo.com/r/hs
>
>
Ok, I will try this varchar option.
But there is no typo, as following is a direct JDBC call, and I am prinitng
values right there (without assigning it to any bean).
CallableStatement cs;
cs =con.prepareCall("{call DBAD.CFSP1501
(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}");
cs.registerOutParameter(7,Types.DECIMAL); // as This field is creating problem
cs.executeUpdate(); or cs.executeQuery(); // tried both
// and I am printing right there, in the same method.
System.out.println("cs.getBigDecimal(7)" + cs.getBigDecimal(7));
This is returning me correct data once (first time), but only 99 for rest.
But if I do:
cs.registerOutParameter(7,Types.DECIMAL,2);//works fine.
There is no iBatis code in above statments (pure JDBC).
And also as Jeff mentioned, I am using DB2 7.1 on mainframe. So Db2 version may
be a problem.
Thanks,
shilpa