Path: csiph.com!x330-a1.tempe.blueboxinc.net!feeder1.hal-mli.net!news.glorb.com!news-out.readnews.com!news-xxxfer.readnews.com!news-out.news.tds.net!newsreading01.news.tds.net!86597e80!not-for-mail From: "Starbuck" Subject: Re: Jave stored procedure Message-ID: X-Comment-To: comp.lang.java.databases Newsgroups: comp.lang.java.databases In-Reply-To: <4905189b$0$90267$14726298@news.sunsite.dk> References: <4905189b$0$90267$14726298@news.sunsite.dk> Content-Type: text/plain; charset=IBM437 Content-Transfer-Encoding: 8bit X-Gateway: time.synchro.net [Synchronet 3.15a-Win32 NewsLink 1.92] Lines: 97 Date: Wed, 27 Apr 2011 15:23:02 GMT NNTP-Posting-Host: 96.60.20.240 X-Complaints-To: news@tds.net X-Trace: newsreading01.news.tds.net 1303917782 96.60.20.240 (Wed, 27 Apr 2011 10:23:02 CDT) NNTP-Posting-Date: Wed, 27 Apr 2011 10:23:02 CDT Organization: TDS.net Xref: x330-a1.tempe.blueboxinc.net comp.lang.java.databases:318 To: comp.lang.java.databases Arne Vajhoj wrote: > Starbuck wrote: >> Starbuck wrote: >>> Can anyone see what is wrong here >>> >>> CallableStatement cs = con.prepareCall("{ ? = call list_index () }"); >>> cs.registerOutParameter(1, Types.OTHER); >>> cs.execute(); >>> ResultSet rs = (ResultSet) cs.getObject(1); >>> while (rs.next()) >>> { >>> //read the returned recordset } >>> >>> >>> When - ResultSet rs = (ResultSet) cs.getObject(1); >>> is executed the error is - "[B cannot be cast to java.sql.ResultSet" >>> >>> The stored procedure being called is as follows, it works fine in c# >>> >>> CREATE PROCEDURE list_index >>> AS >>> BEGIN >>> /* Procedure body */ >>> SELECT name FROM listtypes where ctype = 'C' order by ndx >>> END >>> >>> Thanks in advance chaps. >> >> Its ok, silly me >> >> //ResultSet rs = (ResultSet) cs.getObject(1); >> ResultSet rs = cs.executeQuery(); >> >> Works fine now. > > An SP can return: > - out parameters > - result sets > - return values > > A long time ago I created the following to demo the > various options: > > CREATE PROCEDURE TEST_MULTIOUT > @inarg INTEGER, > @outarg INTEGER OUTPUT > AS > SELECT @outarg = 123 > SELECT * FROM T1 > SELECT * FROM T1 > RETURN -@inarg > > import java.sql.CallableStatement; > import java.sql.Connection; > import java.sql.DriverManager; > import java.sql.ResultSet; > import java.sql.Types; > > public class UseSP { > public static void main(String[] args) throws Exception { > Class.forName("com.sybase.jdbc2.jdbc.SybDriver"); > Connection con = > DriverManager.getConnection("jdbc:sybase:Tds:arnepc2:5000", "sa", ""); > con.setCatalog("Test"); > CallableStatement cstmt = con.prepareCall("{? = CALL > TEST_MULTIOUT(?,?)}"); > cstmt.registerOutParameter(1, Types.INTEGER); > cstmt.setInt(2, 5); > cstmt.registerOutParameter(3, Types.INTEGER); > cstmt.execute(); > while(cstmt.getMoreResults()) { > ResultSet rs = cstmt.getResultSet(); > while(rs.next()) { > System.out.println(rs.getInt(1) + " " + rs.getString(2)); > } > } > System.out.println("return value = " + cstmt.getInt(1)); > System.out.println("out parameter = " + cstmt.getInt(3)); > cstmt.close(); > con.close(); > } > } > > Arne > Thanks Arne That is very helpful Kev --- * Synchronet * The Whitehouse BBS --- whitehouse.hulds.com --- check it out free usenet! --- Synchronet 3.15a-Win32 NewsLink 1.92 Time Warp of the Future BBS - telnet://time.synchro.net:24