在via jdbc中使用来自PL/pgSQL函数的多列SETOF结果

问题描述:

执行返回查询结果的PL/pgSQL函数时,Postgresql jdbc驱动程序似乎只返回一列ResultSet。我无法弄清楚如何访问“元组”的成员。在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()从Java这样的:

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) 

如何访问元组以外的成员解析字符串?

变化

SELECT list_things() 

SELECT * from list_things() 

使它们而不是一个元组排式

+0

谢谢它会返回行!作品!!! – mvuot

+0

我的荣幸 - 很高兴它有所帮助 –