您的位置:首页 > 数据库 > Oracle

java调用oracle存储过程 返回多个结果集

2013-08-17 10:17 393 查看
package jp.co.kindlingsoft;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

public class TestDB {

public static void main(String[] args) throws ClassNotFoundException,
SQLException {

String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@localhost:1521:KIN";
String user = "KIN";
String password = "KIN";

Connection con = null;
CallableStatement stmt = null;
ResultSet rs = null;

Class.forName(driver);

con = DriverManager.getConnection(url, user, password);
stmt = con.prepareCall("{CALL GET_DATA(?,?)}");
stmt.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);
stmt.registerOutParameter(2, oracle.jdbc.OracleTypes.CURSOR);
stmt.execute();

rs = (ResultSet) stmt.getObject(1);
while(rs.next()) {
System.out.println(rs.getObject(1)); // rs.getObject(column_name)
}

System.out.println("************************************************");

rs = (ResultSet) stmt.getObject(2);
while(rs.next()) {
System.out.println(rs.getObject(1));
}
}
}


CREATE OR REPLACE PROCEDURE GET_DATA(
CUR_OUT_1 OUT SYS_REFCURSOR,
CUR_OUT_2 OUT SYS_REFCURSOR)
IS

BEGIN
OPEN CUR_OUT_1 FOR
SELECT USER_TAB_COLS.COLUMN_NAME
FROM USER_TAB_COLS
WHERE TABLE_NAME = 'TABLE1';

OPEN CUR_OUT_2 FOR
SELECT USER_TAB_COLS.COLUMN_NAME
FROM USER_TAB_COLS
WHERE TABLE_NAME = 'TABLE2';
END GET_DATA
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: