Hello, the reason for the ConversionExceptionSapDB is a bug in the database kernel. DBProcedures return DATE and TIMESTAMP values always in internal format. But the JDBC-driver expects the ANSI format and throws an exception. Until the bug is fixed the following DBProcedure shows a workaround for the error:
CREATE DBPROC protocole_get_date_invent(IN protocole INTEGER, OUT dateinvent VARCHAR(10)) AS SELECT MAX(CHAR(dateinvent,ISO)) FROM DUMMY.DBProcGetDate where protocole=:protocole; FETCH INTO :dateinvent; Now the DBProcedure has a VARCHAR(10) output value instead of a DATE. The function CHAR(date,ISO) converts the date value into a String representing the date value in ANSI-format. You do not have to change the JAVA-code, the getDate() in your code snippet below works also with the modified DBProcedure. Regards, Marco ---------------------------------------------- Marco PASKAMP SAP DB, SAP Labs Berlin > -----Original Message----- > From: Thomas Cataldo [mailto:[EMAIL PROTECTED]] > Sent: Mittwoch, 27. Februar 2002 11:03 > To: sapdb.general > Subject: jdbc and stored procs > > > Hi, > > I've got this simple stored proc: > > CREATE DBPROC protocole_get_date_invent(IN protocole INTEGER, OUT > dateinvent DATE) AS > > SELECT MAX(dateinvent) FROM DUMMY.inventaire where > protocole=:protocole; > FETCH INTO :dateinvent; > > > And this method in java: > > public Date getDateInvent() throws RemoteException { > try { > makeConnection(); > } catch (Exception ex) { > throw new EJBException("Unable to connect to database. " + > ex.getMessage()); > } > try { > CallableStatement cs = con.prepareCall("CALL > protocole_get_date_invent(?, ?)"); > cs.registerOutParameter(2, Types.DATE); > cs.setInt(1, id.intValue()); > System.out.println("Running get_date_invent..."); > cs.execute(); > System.out.println("[OK]"); > con.commit(); > // get return value from stored proc > return cs.getDate(2); > } catch (Exception e) { > throw new RemoteException(e.toString()); > } finally { > try { con.close(); } catch (Exception e) { } > } > } > > > I get the following exeception: > Exception in thread "main" java.rmi.ServerException: RemoteException > occurred in server thread; nested exception is: > javax.transaction.TransactionRolledbackException: > com.sap.dbtech.jdbc.translators.ConversionExceptionSapDB: > Cannot convert > '20020210' to Date; nested exception is: > java.rmi.RemoteException: > com.sap.dbtech.jdbc.translators.ConversionExceptionSapDB: > Cannot convert > '20020210' to Date > > > 20020210 is the value I'm expecting. dateinvent is an sql date in the > inventaire table. > > Thanks in advance, > Tom. > > _______________________________________________ > sapdb.general mailing list > [EMAIL PROTECTED] > http://listserv.sap.com/mailman/listinfo/sapdb.general > _______________________________________________ sapdb.general mailing list [EMAIL PROTECTED] http://listserv.sap.com/mailman/listinfo/sapdb.general
