How can you get metadata from a resultset that is returned from a
stored function ?
I have tried the code below with the latest "pg74.215.jdbc3.jar" at
http://jdbc.postgresql.org/download.html
but the invocation of metaData.getColumnCount()) below will lead to a
NullPointerException:
java.lang.NullPointerException
at org.postgresql.jdbc2.AbstractJdbc2ResultSetMetaData.getColumnCount(AbstractJdbc2ResultSetMetaData.java:34)
private void testCallable(Connection conn) throws Exception
{
CallableStatement call = conn.prepareCall("{ ? = call
myfunction() }");
call.registerOutParameter(1, Types.OTHER);
call.execute();
ResultSet results = (ResultSet) call.getObject(1);
ResultSetMetaData metaData = results.getMetaData();
System.out.println("getColumnCount: " +
metaData.getColumnCount());
results.close();
call.close();
}
CREATE TABLE public.mytable
(
mycolumn int4,
mycolumn2 int4
)
CREATE OR REPLACE FUNCTION public.myfunction()
RETURNS refcursor AS
'
DECLARE
ref refcursor;
BEGIN
OPEN ref FOR
SELECT mycolumn, mycolumn2 FROM mytable;
RETURN ref;
END;
'
LANGUAGE 'plpgsql'