我无法读入 java 从 plpgsql 函数返回的数组
I can't read in java returned array from plpgsql function
Postgres plpgsql 函数:
CREATE OR REPLACE FUNCTION usersList()
RETURNS TABLE(at varchar,name varchar,surname varchar) AS $$
BEGIN
RETURN QUERY SELECT * FROM users;
END;
$$ LANGUAGE plpgsql;
和java代码
result = Pstatement.executeQuery("Select usersList() ");
while(result.next()) {
System.out.println(result.getString(("at")));
System.out.println(result.getString(("name")));
System.out.println(result.getString(("surname")));
}
Java 错误 sql 异常信息:
Message: The column name at was not found in this ResultSet.
SQLState: 42703
ErrorCode: 0
我如何 return 函数中的所有 table 列,然后在 java 中打印它们?
您可以使用result.getMetaData().getColumnCount()
查看您检索了多少列,然后您可以调用result.getMetaData().getColumnName(x)
查看列名(将x
替换为列数) .
所以从技术上讲,您应该能够像这样编写代码块:
result = Pstatement.executeQuery("Select usersList() ");
String mesites[];
while(result.next()) {
int columnCount = result.getMetaData().getColumnCount();
System.out.println("Found:"+columnCount+" columns.");
for(int i=1; i<=columnCount; i++){
System.out.println(result.getString(result.getMetaData().getColumnName(i)));
}
}
然后应该打印出在该结果集中检索到的任何列,而不管名称(如果有的话)。
Postgres plpgsql 函数:
CREATE OR REPLACE FUNCTION usersList()
RETURNS TABLE(at varchar,name varchar,surname varchar) AS $$
BEGIN
RETURN QUERY SELECT * FROM users;
END;
$$ LANGUAGE plpgsql;
和java代码
result = Pstatement.executeQuery("SELECT * FROM usersList() ");
while(result.next()) {
System.out.println(result.getString(("at")));
System.out.println(result.getString(("name")));
System.out.println(result.getString(("surname")));
}
致谢 RealSkeptic && Nick Barnes !!!
Postgres plpgsql 函数:
CREATE OR REPLACE FUNCTION usersList()
RETURNS TABLE(at varchar,name varchar,surname varchar) AS $$
BEGIN
RETURN QUERY SELECT * FROM users;
END;
$$ LANGUAGE plpgsql;
和java代码
result = Pstatement.executeQuery("Select usersList() ");
while(result.next()) {
System.out.println(result.getString(("at")));
System.out.println(result.getString(("name")));
System.out.println(result.getString(("surname")));
}
Java 错误 sql 异常信息:
Message: The column name at was not found in this ResultSet.
SQLState: 42703
ErrorCode: 0
我如何 return 函数中的所有 table 列,然后在 java 中打印它们?
您可以使用result.getMetaData().getColumnCount()
查看您检索了多少列,然后您可以调用result.getMetaData().getColumnName(x)
查看列名(将x
替换为列数) .
所以从技术上讲,您应该能够像这样编写代码块:
result = Pstatement.executeQuery("Select usersList() ");
String mesites[];
while(result.next()) {
int columnCount = result.getMetaData().getColumnCount();
System.out.println("Found:"+columnCount+" columns.");
for(int i=1; i<=columnCount; i++){
System.out.println(result.getString(result.getMetaData().getColumnName(i)));
}
}
然后应该打印出在该结果集中检索到的任何列,而不管名称(如果有的话)。
Postgres plpgsql 函数:
CREATE OR REPLACE FUNCTION usersList()
RETURNS TABLE(at varchar,name varchar,surname varchar) AS $$
BEGIN
RETURN QUERY SELECT * FROM users;
END;
$$ LANGUAGE plpgsql;
和java代码
result = Pstatement.executeQuery("SELECT * FROM usersList() ");
while(result.next()) {
System.out.println(result.getString(("at")));
System.out.println(result.getString(("name")));
System.out.println(result.getString(("surname")));
}
致谢 RealSkeptic && Nick Barnes !!!