Re: Function with RETURN TYPE RECORD Called From JAVA

From: "Carl E(dot) McMillin" <carlymac(at)earthlink(dot)net>
To: "'Sumita Biswas'" <sbiswas(at)cisco(dot)com>, <pgsql-general(at)postgresql(dot)org>
Cc: "'Kris Jurka'" <books(at)ejurka(dot)com>, "'Tom Lane'" <tgl(at)sss(dot)pgh(dot)pa(dot)us>, "'Richard Huxton'" <dev(at)archonet(dot)com>
Subject: Re: Function with RETURN TYPE RECORD Called From JAVA
Date: 2004-05-21 18:30:55
Message-ID: 000401c43f61$c565b090$6600a8c0@DEVSONY
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

I'm fairly sure that postgres does not support "out" parameters:

objCallStmt.registerOutParameter(1, 12);

Isn't allowed.

Since you only have one value coming out of the function, you could use
regular Statement or PreparedStatement client-side and rewrite your
server-side function so it returns a value thru RETURNS clause. I'm making
assumption that you are using PL/pgsql (only language I'm familiar with).

The second is that you probably want to call the executeQuery method on the
Statement/PreparedStatement and walk through the result-set (per jdocs) it
returns.

Carl <|};-)>

-----Original Message-----
From: pgsql-general-owner(at)postgresql(dot)org
[mailto:pgsql-general-owner(at)postgresql(dot)org] On Behalf Of Sumita Biswas
Sent: Sunday, May 16, 2004 7:10 PM
To: pgsql-general(at)postgresql(dot)org
Cc: 'Kris Jurka'; 'Tom Lane'; 'Richard Huxton'
Subject: [GENERAL] Function with RETURN TYPE RECORD Called From JAVA

Hi All,

I have a Function that returns a variable of Type RECORD.
PFA the .sql file in which the Function is written.

When I execute this Function from JAVA and try to get the Return Variable in
a ResultSet object I get the following Error:

Exception in thread "main" java.lang.ClassCastException
at com.cisco.ccm.car.general.Test.testStoredProc(Test.java:119)

Here is the JAVA Code that I am using:

---------------------------------------------------------------
CARConnector objCARConn = new CARConnector();
CallableStatement objCallStmt = null;

objCallStmt = objCARConn.prepareCall("{ ? = call
Proc_ConferenceSummary(?,?,?,?,?) }");
objCallStmt.registerOutParameter(1, 12);
// '12/1/2003','1/23/2004',1,1,0,5001
//'3/5/2004','3/5/2004',1,1,5001

objCallStmt.setString(2,"3/5/2004");
objCallStmt.setString(3,"5/5/2004");
//objCallStmt.setString(3,"3/5/2004");
objCallStmt.setInt(4,1);
objCallStmt.setInt(5,1);
objCallStmt.setInt(6,5001);
objCallStmt.execute();
ResultSet rs = (ResultSet)objCallStmt.getObject(1);//THIS IS WHERE I
GET THE CLASSCASTEXCEPTION
---------------------------------------------------------------

Please let me know in case I am doing something wrong, or there is a
different way of doing things.

Regards,
Sumita

---------------------------(end of broadcast)---------------------------
TIP 9: the planner will ignore your desire to choose an index scan if your
joining column's datatypes do not match

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Vivek Khera 2004-05-21 19:02:20 extreme memory use when loading in a lot of data
Previous Message Tom Lane 2004-05-21 17:38:12 Re: reading vacuum verbosity