Hmm, good point. I should try that. I have only tried these syntaxes: ==================================== connection.prepareStatement("select * from p_enhance_address2()"); connection.prepareCall("{ call p_enhance_address2(?) }"); // with an output parameter registered ====================================
Since I'm doing this for my database abstraction tool http://jooq.sourceforge.net, I could add a specialised Postgres stored procedures abstraction and hide these details from the outside world... Thanks for the hint! 2011/2/16 Robert Haas <robertmh...@gmail.com> > On Wed, Feb 16, 2011 at 7:03 AM, Oliver Jowett <oli...@opencloud.com> > wrote: > > On 17/02/11 00:58, Robert Haas wrote: > >> On Wed, Feb 16, 2011 at 3:30 AM, Lukas Eder <lukas.e...@gmail.com> > wrote: > >>> I'm not trying to fix the signature. I want exactly that signature. I > want > >>> to return 1 UDT as an OUT parameter from a function. > >>> > >>> Somewhere between JDBC and the database, this signature is lost, and > JDBC's > >>> internal code tells me that I have to bind 6 OUT parameters, instead of > 1. > >>> It happens to be so, because the UDT contains 6 attributes, so somehow > the > >>> JDBC/database protocol flattens the UDT, and I think that's a bug, > either in > >>> JDBC or in the protocol or in the database. My findings were that I can > >>> correctly read the UDT OUT parameter using the pgAdmin III tool, so I > >>> excluded the database as a bug holder candidate. > >> > >> Oh, OK. Sorry, I can't help you any with the JDBC side... > > > > Well, the underlying problem is that "SELECT * from > > function_with_one_out_parameter()" is returning *6* columns, not 1 > > column. I don't know if that's expected or not on the plpgsql side, but > > the JDBC driver has no way of distinguishing that sort of result from a > > function that has 6 OUT parameters. > > If you do SELECT function_with_one_out_parameter() rather than SELECT > * FROM function_with_one_out_parameter(), you'll get just one > argument. Does that help at all? > > -- > Robert Haas > EnterpriseDB: http://www.enterprisedb.com > The Enterprise PostgreSQL Company >