CURSOR и REF CURSOR как тип данных JDBC - PullRequest
3 голосов
/ 01 июля 2011

Многие СУБД поддерживают типы "CURSOR".Эти типы в основном полезны, когда возвращаются из хранимых процедур.Пример в Oracle:

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

При вызове этой процедуры с использованием JDBC следует использовать тип OracleTypes.CURSOR = -10 "JDBC".Этот тип не является частью какого-либо стандарта и не будет частью JDBC 4.1 в Java 7.

Кто-нибудь знает, будут ли ребята из JSR рассматривать возможность добавления этого типа в стандарт в будущем?Или, если другие СУБД имеют аналогичный «тип, специфичный для поставщика»?

1 Ответ

2 голосов
/ 27 мая 2016

Поддержка 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));
}
...