2017-10-15 2 views
1

クエリの結果を返すPL/pgSQL関数を実行すると、PostgreSQLのjdbcドライバはResultSetを1つだけ返すようです。私は "タプル"のメンバーにアクセスする方法を理解できません。 Javaから例えばvia jdbcのPL/pgSQL関数から複数列のSETOF結果を使用する

、私はデータベース

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; 

を持っていると私は(PL/pgSQL関数にlist_thingsを使用している場合)次のように:

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

出力は

のように見えます
(1,pen) 
(2,eraser) 

タプルのメンバーにはどうしたらアクセスできますか?文字列を解析しますか?

答えて

1

変更

SELECT list_things() 

SELECT * from list_things() 

に行タイプと1組として

+0

はありがとうない、彼らがしているように、それは行を返します!!!作品!!! – mvuot

+0

私の喜び - 喜んで助けた –

関連する問題