在 via jdbc 中使用 PL/pgSQL 函数的多列 SETOF 结果
Using multi-column SETOF result from a PL/pgSQL function in via jdbc
当执行 PL/pgSQL 函数 returning 查询结果时,Postgresql jdbc 驱动程序似乎 return 只有一个列 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;
我使用 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()
所以它会 return 行,而不是行类型
的一个元组
当执行 PL/pgSQL 函数 returning 查询结果时,Postgresql jdbc 驱动程序似乎 return 只有一个列 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;
我使用 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()
所以它会 return 行,而不是行类型
的一个元组