在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()
使它们而不是一个元组排式
谢谢它会返回行!作品!!! – mvuot
我的荣幸 - 很高兴它有所帮助 –