CURSOR and REF CURSOR as a JDBC data type
Many RDBMS support "CURSOR" types of some sort. Those types are mostly useful when returned from stored procedures. An example in Oracle:
TYPE t_cursor_type IS REF CURSOR;
CREATE PROCEDURE p (c OUT t_cursor_type);
When calling this procedure using JDBC, the OracleTypes.CURSO开发者_Go百科R = -10
"JDBC" type should be used. This type is not part of any standard and it is not going to be part of JDBC 4.1 in Java 7.
Does anyone know whether the JSR guys will consider adding this type to the standard some time in the future? Or if other RDBMS have a similar "vendor-specific type"?
Support for REF CURSORS was added in Java 8/JDBC 4.2. Use the type Types.REF_CURSOR
for cursor return types. They can be iterated through the ResultSet
interface. Example:
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));
}
精彩评论