Marco, I ran your test program against my SAP database and it failed. I'm sending you the code I ran (I just modified inputs for database). I'm also sending you JDBC-trace file (DBProcResult.txt). Any ideas?
Thanks, Peter -----Original Message----- From: Paskamp, Marco [mailto:[EMAIL PROTECTED]] Sent: Wednesday, June 12, 2002 1:59 AM To: 'Peter Vilim'; [EMAIL PROTECTED] Subject: RE: NullPointerException after retrieving resultset from stored procedure Hello Peter, please don't use the modified driver for retrieving resultsets from dbprocedures. The patch will only work in some special cases. When your database kernel version is 7.3.0.24 you should use the current available jdbc driver at: ftp://ftp.sap.com/pub/sapdb/bin/java/sapdbc.jar. I've written a small testprogram using the sample code from your mail. This program works proper with the current jdbc-driver. The testprogram is attached to this mail. Please tryout the current driver and have a look to the testprogram. If it doesn't work send me the traces (jdbc, vtrace). Regards, Marco > -----Original Message----- > From: Peter Vilim [mailto:[EMAIL PROTECTED]] > Sent: Dienstag, 11. Juni 2002 19:43 > To: Paskamp, Marco; [EMAIL PROTECTED] > Subject: RE: NullPointerException after retrieving resultset > from stored > procedure > > > Marco, > > I checked the database kernel and it is 7.3.0.24 > > The problem is actually a little bit more complex. The > application that > we have created works fine in one instance (running SAPDB, > Apache Tomcat > 4.01, Windows XP). However, for some reason it does not work on mine > (also WinXP, Apache Tomcat 4.01, SAPDB). > > When we were installing the application on my machine, we > have restored > a backup copy of the working application and directly copied the Java > application to my computer. What's strange is the fact that the > application does not work when connected to my (local) SAP database. > However, it works fine when the app connects to the original SAP > database. > > We are using a modified JDBC driver > (http://listserv.sap.com/pipermail/sapdb.general/2002-April/01 > 1472.html) > because none of the drivers that we found on your website were able to > call stored procedures and also retrieve a resultset from these stored > procedures. As a matter of fact, the stored procs that do not work on > some instances of SAP DB should return a resultset, but they do not. > > From the symptoms above, I am guessing that there is something wrong > with our restore procedure or the installation of the database. Please > let me know if you can help me from these notes, otherwise > I'll send you > JDBC-trace and VTrace > > Peter > > -----Original Message----- > From: Paskamp, Marco [mailto:[EMAIL PROTECTED]] > Sent: Tuesday, June 11, 2002 9:30 AM > To: 'Peter Vilim'; [EMAIL PROTECTED] > Subject: RE: NullPointerException after retrieving resultset > from stored > procedure > > Hello, > are you sure that the version of your JDBC-driver and your database > kernel > (!!!) is >= 7.3.0.24. DBProcedures with resultsets and jdbc will only > work > with the newest available version. If you use the newest version > (database > kernel and jdbc) please send me a JDBC-trace( > http://sapdb.2scale.net/moin.cgi/JdbcTrace ) and if possible a vtrace > http://sapdb.2scale.net/moin.cgi/VTrace). > > Regards, > Marco > ---------------------------------------------- > Marco PASKAMP > SAP DB, SAP Labs Berlin > > > -----Original Message----- > > From: Paskamp, Marco > > Sent: Dienstag, 11. Juni 2002 16:18 > > To: Paskamp, Marco > > Subject: FW: NullPointerException after retrieving resultset > > from stored > > procedure > > > > > > > > -----Original Message----- > > From: Peter Vilim [mailto:[EMAIL PROTECTED]] > > Sent: Dienstag, 11. Juni 2002 16:07 > > To: [EMAIL PROTECTED] > > Subject: NullPointerException after retrieving resultset from > > stored procedure > > > > > > Hi all, > > > > I'm using the latest JDBC driver for working with SAPDB. > > After calling stored procedure from Java code I get > > NullPointerException error. There is how my code, stored > > procedure and error message look like. Do you have any ideas? > > > > Stored procedure: > > CREATE DBPROC SP_COMPANY_EDIT (IN COMPANY_ID INT) RETURNS CURSOR AS > > BEGIN > > SET $CURSOR = 'MYCURSOR'; > > DECLARE :$CURSOR CURSOR FOR SELECT * FROM DBA.COMPANY WHERE > > COMPANY_ID = :COMPANY_ID; > > END; > > > > Java code: > > cstmt = m_conDb.prepareCall("{call SP_COMPANY_EDIT (?)}"); > > cstmt.setString(1,sCompanyId); > > cstmt.execute(); > > rs= cstmt.getResultSet(); > > rs.next(); > > CompanyListBean clbObj = new CompanyListBean(); > > clbObj = getListBean (rs); > > > > Error Code: > > java.lang.NullPointerException > > at > > com.synfoserv.actions.CompanyAction.companyEdit(CompanyAction. > > java:357) > > at > > com.synfoserv.actions.CompanyAction.perform(CompanyAction.java:52) > > at > > com.synfoserv.actions.ActionServlet.service(ActionServlet.java:77) > > at > > javax.servlet.http.HttpServlet.service(HttpServlet.java:853) > > at > > org.apache.catalina.core.ApplicationFilterChain.internalDoFilt > > er(ApplicationFilterChain.java:247) > > at > > org.apache.catalina.core.ApplicationFilterChain.doFilter(Appli > > cationFilterChain.java:193) > > at > > org.apache.catalina.core.StandardWrapperValve.invoke(StandardW > > rapperValve.java:243) > > at > > org.apache.catalina.core.StandardPipeline.invokeNext(StandardP > > ipeline.java:566) > > at > > org.apache.catalina.core.StandardPipeline.invoke(StandardPipel > > ine.java:472) > > at > > > org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) > > at > > org.apache.catalina.core.StandardContextValve.invoke(StandardC > > ontextValve.java:201) > > at > > org.apache.catalina.core.StandardPipeline.invokeNext(StandardP > > ipeline.java:566) > > at > > org.apache.catalina.valves.CertificatesValve.invoke(Certificat > > esValve.java:246) > > at > > org.apache.catalina.core.StandardPipeline.invokeNext(StandardP > > ipeline.java:564) > > at > > org.apache.catalina.core.StandardPipeline.invoke(StandardPipel > > ine.java:472) > > at > > > org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) > > at > > org.apache.catalina.core.StandardContext.invoke(StandardContex > > t.java:2344) > > at > > org.apache.catalina.core.StandardHostValve.invoke(StandardHost > > Valve.java:164) > > at > > org.apache.catalina.core.StandardPipeline.invokeNext(StandardP > > ipeline.java:566) > > at > > org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDi > > spatcherValve.java:170) > > at > > org.apache.catalina.core.StandardPipeline.invokeNext(StandardP > > ipeline.java:564) > > at > > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReport > > Valve.java:170) > > at > > org.apache.catalina.core.StandardPipeline.invokeNext(StandardP > > ipeline.java:564) > > at > > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValv > > e.java:462) > > at > > org.apache.catalina.core.StandardPipeline.invokeNext(StandardP > > ipeline.java:564) > > at > > org.apache.catalina.core.StandardPipeline.invoke(StandardPipel > > ine.java:472) > > at > > > org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) > > at > > org.apache.catalina.core.StandardEngineValve.invoke(StandardEn > > gineValve.java:163) > > at > > org.apache.catalina.core.StandardPipeline.invokeNext(StandardP > > ipeline.java:566) > > at > > org.apache.catalina.core.StandardPipeline.invoke(StandardPipel > > ine.java:472) > > at > > > org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) > > at > > org.apache.catalina.connector.http.HttpProcessor.process(HttpP > > rocessor.java:1011) > > at > > org.apache.catalina.connector.http.HttpProcessor.run(HttpProce > > ssor.java:1106) > > at java.lang.Thread.run(Thread.java:536) > > > > > > Peter Vilim > > Application Engineer > > Synergy Information Services, Inc. > > Email: [EMAIL PROTECTED] > > >
DBProcResult.java
Description: Binary data
---- Thread e5e2c3 main
==================================
package com.sap.dbtech.jdbc, "SAP DB JDBC Driver", "SAP AG", "7.3.0 Build
023-000-085-131" on Java 1.4.0-rc
new Connection 'jdbc:sapdb://localhost/IndeoCRM>'
Connection(ef90c)::createStatement ()
<-createStatement: com.sap.dbtech.jdbc.StatementSapDB@fa3ac1
Statement(de3f2d)::executeUpdate (drop dbprocedure DBProcResult)
<-!
com.sap.dbtech.jdbc.exceptions.DatabaseException: SAP DBTech SQL: [-4016] (at 18)
Message not available
at com.sap.dbtech.jdbc.packet.ReplyPacket.createException(ReplyPacket.java:51)
at com.sap.dbtech.jdbc.ConnectionSapDB.throwSQLError(ConnectionSapDB.java:656)
at com.sap.dbtech.jdbc.ConnectionSapDB.execute(ConnectionSapDB.java:338)
at com.sap.dbtech.jdbc.ConnectionSapDB.execute(ConnectionSapDB.java:273)
at com.sap.dbtech.jdbc.StatementSapDB.sendCommand(StatementSapDB.java:578)
at com.sap.dbtech.jdbc.StatementSapDB.sendSQL(StatementSapDB.java:619)
at com.sap.dbtech.jdbc.StatementSapDB.execute(StatementSapDB.java:172)
at com.sap.dbtech.jdbc.StatementSapDB.executeUpdate(StatementSapDB.java:323)
at com.sap.dbtech.jdbc.trace.Statement.executeUpdate(Statement.java:204)
at DBProcResult.<init>(DBProcResult.java:25)
at DBProcResult.main(DBProcResult.java:6)
Statement(de3f2d)::executeUpdate (CREATE DBPROC DBProcResult (IN COMPANY_ID INT)
RETURNS CURSOR AS BEGIN SET $CURSOR = 'MYCURSOR'; DECLARE :$CURSOR CURSOR FOR SELECT *
FROM SUPERDBA.DUAL WHERE :COMPANY_ID = :COMPANY_ID; END; )
<-!
com.sap.dbtech.jdbc.exceptions.DatabaseException: SAP DBTech SQL: [-4004] (at 133)
Message not available:DUAL
at com.sap.dbtech.jdbc.packet.ReplyPacket.createException(ReplyPacket.java:51)
at com.sap.dbtech.jdbc.ConnectionSapDB.throwSQLError(ConnectionSapDB.java:656)
at com.sap.dbtech.jdbc.ConnectionSapDB.execute(ConnectionSapDB.java:338)
at com.sap.dbtech.jdbc.ConnectionSapDB.execute(ConnectionSapDB.java:273)
at com.sap.dbtech.jdbc.StatementSapDB.sendCommand(StatementSapDB.java:578)
at com.sap.dbtech.jdbc.StatementSapDB.sendSQL(StatementSapDB.java:619)
at com.sap.dbtech.jdbc.StatementSapDB.execute(StatementSapDB.java:172)
at com.sap.dbtech.jdbc.StatementSapDB.executeUpdate(StatementSapDB.java:323)
at com.sap.dbtech.jdbc.trace.Statement.executeUpdate(Statement.java:204)
at DBProcResult.<init>(DBProcResult.java:31)
at DBProcResult.main(DBProcResult.java:6)
