2017-10-15 1 views
1

Wenn Sie eine PL/pgSQL-Funktion ausführen, die ein Ergebnis einer Abfrage zurückgibt, scheint der Postgresql jdbc-Treiber nur eine einzige Spalte ResultSet zurückzugeben. Ich kann nicht herausfinden, wie man auf die Mitglieder des "Tupels" zugreift.Verwenden von mehrspaltigen SETOF-Ergebnis von einer PL/pgSQL-Funktion in via jdbc

Zum Beispiel, wenn ich

CREATE TABLE things (id SERIAL PRIMARY KEY, name VARCHAR); 
INSERT INTO things (name) VALUES ('pen'), ('eraser'); 

-- function to return all rows as a SETOF 
CREATE OR REPLACE FUNCTION list_things() RETURNS SETOF things AS $$ 
BEGIN 
    RETURN QUERY SELECT id, name FROM things; 
END 
$$ LANGUAGE PLPGSQL; 

eine Datenbank haben, und ich verwenden, um den PL/pgSQL Funktion list_things() von Java wie folgt aus:

static void printThings(Connection c) throws SQLException { 
    Statement s = c.createStatement(); 
    String sql = "SELECT list_things()"; 
    ResultSet rs = s.getResultSet(); 
    while (rs.next()) { 
     // is String all I can make of it? 
     System.out.println(rs.getString(1)); 
     // how can I access the name member of result row? 
    } 
} 

Die Ausgabe sieht wie

(1,pen) 
(2,eraser) 

Wie kann ich auf die Mitglieder von Tupeln anders als durch zugreifen Parsing der Zeichenfolge?

Antwort

1

Änderung

SELECT list_things() 

zu

SELECT * from list_things() 

so würde es Zeilen zurück, da sie Typ und nicht als ein Tupel mit Reihe sind

+0

Thank you !!! Funktioniert !!! – mvuot

+0

mein Vergnügen - froh, dass es geholfen hat –

Verwandte Themen