OracleDataSource dataSource = new OracleDataSource();
dataSource.setURL("jdbc:oracle:thin:@localhost:1521:xe");
dataSource.setUser("hoge");
dataSource.setPassword("fuga");
try (Connection connection = dataSource.getConnection()) {
// PL/SQLの定義。ref_curというref_cursorを開き、アウトパラメータ(? := ref_curの部分)に代入している。
CallableStatement statement = connection.prepareCall(
"declare "
+ " ref_cur sys_refcursor;"
+ " begin "
+ " open ref_cur"
+ " for ' select table_name from user_tables'; "
+ " ? := ref_cur;"
+ " end;"
);
// アウトパラメータの方をcursorと定義する
statement.registerOutParameter(1, OracleTypes.CURSOR);
statement.execute();
// アウトパラメータをResultSetとして取得し、処理してあげる
try (ResultSet resultSet = (ResultSet) statement.getObject(1)) {
while (resultSet.next()) {
System.out.println("resultSet.getString(\"table_name\") = " + resultSet.getString("table_name"));
}
}
}
2012年11月4日日曜日
PL/SQLで開いたカーソルをJDBC経由でJavaに返す方法
PL/SQLで開いたカーソルをJDBC経由で受け取り、Java側で処理する方法。
ラベル:
Oracle