2017-10-15 5 views
1

Lors de l'exécution d'une fonction PL/pgSQL renvoyant le résultat d'une requête, le pilote Postgresql jdbc semble renvoyer uniquement une seule colonne ResultSet. Je n'arrive pas à comprendre comment accéder aux membres du "tuple".Utilisation du résultat SETOF multi-colonne d'une fonction PL/pgSQL dans via jdbc

Par exemple, si j'ai une base de données

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; 

et j'utiliser la fonction PL/pgSQL list_things() de Java comme ceci:

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? 
    } 
} 

La sortie ressemble

(1,pen) 
(2,eraser) 

Comment puis-je accéder aux membres de tuples autrement que par l'analyse de la chaîne?

Répondre

1

changement

SELECT list_things() 

à

SELECT * from list_things() 

il retournerait les lignes telles qu'elles sont et non pas comme un tuple avec le type de ligne

+0

Merci !!! Travaux!!! – mvuot

+0

mon plaisir - content qu'il a aidé –