Procedure Call

Language/JSP 2013. 11. 18. 14:11
// 드라이버 로드
try {
    Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e1) {
    e1.printStackTrace(pw);
}
 
// 연결 클래스 변수 선언
Connection        conn  = null;
CallableStatement cstat = null;
ResultSet         rs    = null;
try {
    conn = DriverManager.getConnection("jdbc:oracle:thin:@아이피:포트:Tnsname", "아이디", "비밀번호");
 
    // 프로시져 콜
    CallableStatement cstat = conn.prepareCall("{CALL 패키지명.프로시져명(?)}");
    // output cursor로 데이터를 받아온다.   
    cstat.registerOutParameter(1, OracleTypes.CURSOR);
    cstat.execute();
 
    rs = (ResultSet)cstat.getObject(1);
     
    if ( rs != null )
    {
        ResultSetMetaData rsmeta = rs.getMetaData();
        int nColumn = rsmeta.getColumnCount();
        out.println("");
        out.println("");
        for (int i = 0; i <= nColumn; i++)
        {
            if ( i == 0 )
                out.println(" 번호 ");
            else
            {
                String strColumnName = rsmeta.getColumnName(i);
                out.println(strColumnName);                
            }
        }//for (int i = 0; i <= nColumn; i++)
        out.println("");
         
        int nRow = 1;
        while (rs.next())
        {
            out.println("");
            StringBuffer sb = new StringBuffer();
            for (int i = 0; i <= nColumn; i++)
            {
                if ( i == 0 )
                    sb.append(  Integer.toString(nRow) );
                else
                    sb.append( rs.getString(i) );
            }
            out.println(sb.toString());
            out.println("");
            nRow++;
        }//while (rs.next())
         
        out.println("");
    }//if ( rs != null )
} catch (SQLException e) {
    e.printStackTrace(pw);
} finally {
    try {rs.close();   } catch (SQLException e) {}
    try {cstat.close();} catch (SQLException e) {}
    try {conn.close(); } catch (SQLException e) {}





: