use*_*280 2 stored-procedures jdbc stored-functions psql
我只是试图从服务器(getStat)调用存储的函数,看起来像这样:
create type stat as (type text, location text, number int);
create function getStat() returns setof stat as 'select distinct table1.type, table1.location, table1.number from table1, table2 where table2.finding=10 order by number desc;' language 'sql';
Run Code Online (Sandbox Code Playgroud)
现在这里是jdbc代码:
CallableStatement callable = null;
String storedProc = "{call getStat(?, ?, ?)}";
try {
callable = connection.prepareCall(storedProc);
callable.registerOutParameter(1, java.sql.Types.VARCHAR);
callable.registerOutParameter(2, java.sql.Types.VARCHAR);
callable.registerOutParameter(3, java.sql.Types.INTEGER);
boolean results = callable.execute();
System.out.println(callable.getString(1));
System.out.println(callable.getString(2));
System.out.println(callable.getInt(3));
while(results){
ResultSet rs = callable.getResultSet();
while(rs.next()){
System.out.println(rs.getString(1));
System.out.println(rs.getString(2));
System.out.println(rs.getInt(3));
}
//rs.close();
results = callable.getMoreResults();
}
Run Code Online (Sandbox Code Playgroud)
好的,现在问题是:当我调用它时,它只打印出整个批量的第一行,它应该是打印的.是的,这很清楚,因为我执行以下代码:
System.out.println(callable.getString(1));
System.out.println(callable.getString(2));
System.out.println(callable.getInt(3));
Run Code Online (Sandbox Code Playgroud)
但是我在while循环中做了同样的事情......并且没有显示任何内容.
也许问题是显而易见的,但我错过了:(
谢谢!
无需使用带{call ...}语法的CallableStatement .
只需使用选择和常规Statement:
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("select * from getStat()");
while (rs.next())
{
System.out.println(rs.getString(1));
System.out.println(rs.getString(2));
System.out.println(rs.getInt(3));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4481 次 |
| 最近记录: |