'JAVA'에 해당되는 글 51건

  1. 2008.08.25 java에서 oracle procedure 사용하기
2008. 8. 25. 20:29

java에서 oracle procedure 사용하기

//-----------------------------------------------------------------------
JAVA

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

import oracle.jdbc.driver.OracleCallableStatement;
import oracle.jdbc.driver.OracleResultSet;
import oracle.jdbc.driver.OracleTypes;

public class RefCursor {
    public static void main(String[] args) throws SQLException {
        RefCursor vTest = new RefCursor();
        vTest.prepareCall();
    }

    void prepareCall() throws SQLException {

        CallableStatement cstmt = null;
        OracleCallableStatement ocstmt = null;

        DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
        Connection conn = DriverManager.getConnection(
                                   "jdbc:oracle:thin:@127.0.0.1:1521:dbsid", "admin", "admin");

         cstmt = conn.prepareCall("BEGIN ta_site_pkg.ta_site_pkg_body(?,?); END;");

         cstmt.setInt(1, 1);
         cstmt.registerOutParameter(2, OracleTypes.CURSOR);
         cstmt.execute();

         ocstmt = (OracleCallableStatement) cstmt;
         ResultSet rs = (OracleResultSet) ocstmt.getCursor(2);

         while (rs.next()) {
             System.out.println(rs.getString(1));
         }
    }
}


//--------------------------------------------------------------
DB

CREATE OR REPLACE PACKAGE ta_site_pkg AS
TYPE ref_type IS REF CURSOR;
PROCEDURE ta_site_pkg_body
(
    p_code IN NUMBER,
    v_result OUT ref_type
);

END;
/

CREATE OR REPLACE PACKAGE BODY ta_site_pkg AS
PROCEDURE ta_site_pkg_body
(
    p_code IN NUMBER,
    v_result OUT ref_type
)
AS
BEGIN
    OPEN v_result FOR
        SELECT site_name
        FROM ta_site
        WHERE site_code=p_code;
END;
END;
/


//------------------------------------------------------------
참조사이트

http://namoda.springnote.com/pages/590803

http://cherrykyun.tistory.com/229