サーバー(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';
これが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();
}
さて、そして今問題です:私がそれを呼んでいるとき、それは全体の最初の行を印刷するだけです、それはprintendでなければなりません。ええ、それは明らかです。なぜなら、私は次のコードを実行しているからです。
System.out.println(callable.getString(1));
System.out.println(callable.getString(2));
System.out.println(callable.getInt(3));
しかし、whileループでも同じことをします...そしてそれ以上何も表示されません。
たぶん問題は明らかなものですが、私はそれを見逃しています:(
ありがとう!