[ http://issues.apache.org/jira/browse/DERBY-501?page=all ] Knut Anders Hatlen resolved DERBY-501: --------------------------------------
Fix Version: 10.2.0.0 Resolution: Fixed Committed revision 414795. > Client and embedded drivers differ on invoking a procedure that returns a > single Dynamic resultSet using CallableStatement.executeQuery() > ----------------------------------------------------------------------------------------------------------------------------------------- > > Key: DERBY-501 > URL: http://issues.apache.org/jira/browse/DERBY-501 > Project: Derby > Type: Bug > Components: JDBC > Versions: 10.1.1.0, 10.0.2.1 > Environment: All Platforms > Reporter: Satheesh Bandaram > Assignee: Knut Anders Hatlen > Fix For: 10.2.0.0 > Attachments: Test.java, Test1.java, derby-501-v1.diff, derby-501-v1.stat, > derby-501-v2.diff, derby-501-v2.stat, derby-501-v3.diff, derby-501-v3.stat > > It is possible to invoke a stored procedure that returns a single dynamic > result using CallableStatement.executeQuery using Derby Client. The embedded > JDBC driver, however, throws an exception like: > Test starting ...url = jdbc:derby:tdb > Exception in thread "main" ERROR X0Y78: Statement.executeQuery() cannot be > called with a statement that returns a row count. > at > org.apache.derby.iapi.error.StandardException.newException(StandardException.java:301) > at > org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:434) > at > org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1142) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(EmbedPreparedStatement.java:1323) > at > org.apache.derby.impl.jdbc.EmbedCallableStatement.executeStatement(EmbedCallableStatement.java:109) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeQuery(EmbedPreparedStatement.java:241) > at Test1.main(Test1.java:26) > I think the embedded driver behavior is incorrect here, though I would double > check that the JDBC spec says. > To reproduce the problem, > 1) Create a database called 'tdb' and a table called COMPANY as create table > COMPANY(name char(10)); > 2) Insert two rows as: insert into COMPANY values 'IBM', 'SUN'; > 3) register a procedure as: > CREATE PROCEDURE GETALLCOMPANIES() PARAMETER STYLE JAVA LANGUAGE JAVA READS > SQL DATA DYNAMIC RESULT SETS 1 EXTERNAL NAME 'Test.getAllCompanies' > 4) Set server classpath > 5) Compile two attached java programs, Test and Test1 > 6) Execute 'java Test1 1' to run as a client program and 'java Test1 2' to > run as an embedded program. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira