在执行返回查询结果的PL/pgSQL函数时,Postgresql jdbc驱动程序似乎只返回一个列ResultSet。我不知道如何访问“tuple”的成员。
例如,如果我有一个数据库

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;

我使用Java中的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)

除了解析字符串之外,如何访问元组的成员?

最佳答案

改变

SELECT list_things()


SELECT * from list_things()

所以它将按原样返回行,而不是按行类型返回一个元组

关于sql - 通过jdbc在PL/pgSQL函数中使用多列SETOF结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46753352/

10-12 04:38