2011-06-30 14 views
2

多くのRDBMSでは、ある種の「CURSOR」型がサポートされています。これらの型は、ストアドプロシージャから返されるときに最も有用です。 Oracleの例:JDBCを使用してこの手順を呼び出すときJDBCデータ型としてのCURSORおよびREF CURSOR

TYPE t_cursor_type IS REF CURSOR; 
CREATE PROCEDURE p (c OUT t_cursor_type); 

OracleTypes.CURSOR = -10 "JDBC" タイプを使用する必要があります。このタイプは標準の一部ではなく、Java 7のJDBC 4.1の一部にはなりません。

JSRの人たちがこのタイプを将来的に標準に追加することを検討するかどうかは誰にも分かりますか?あるいは、他のRDBMSに同様の「ベンダー固有のタイプ」がある場合

+0

特に、ほぼすべてのDBにカーソルがあることを考慮してください。私も唯一のOracleを使用している間に、カーソルの迅速なGoogle検索は、MSSql、MySQL、postgre、およびdb2の結果を示します。 sqlite(驚くことではない)だけがそれらを持っていないようです。 – Voo

+0

@Voo、H2でも関数結果の "カーソル"をサポートしています... –

答えて

1

REF CURSORSのサポートがJava 8/JDBC 4.2で追加されました。カーソル戻りタイプにはタイプTypes.REF_CURSORを使用してください。それらは、ResultSetインターフェイスを通して反復することができます。例:

CallableStatement cstmt = conn.prepareCall("{callmySproc(?)}"); 
cstmt.registerOutParameter(1, Types.REF_CURSOR); 
cstmt.executeQuery(); 
ResultSet cursor = cstmt.getObject(1, ResultSet.class); 
while(cursor.next()) { 
    System.out.println("Name = " + cursor.getString(1)); 
} 
関連する問題