database/oracle

자바에서 오라클 프로시저 또는 패키지 호출 방법

labj 2012. 3. 22. 00:39


자바에서 오라클 프로시저 또는 패키지 호출 방법

package 패키지명;

import java.sql.CallableStatement;       // 필요한 애들 import
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

 

public class CityConv {

 private static CityConv fosen = new CityConv();
 
 //객체 반환
 public static CityConv getFosen(){
  return fosen;
 }

 //생성자
 private CityConv(){}
 
 //디비 연결
 private Connection getConnection()throws Exception{
  Context initCtx = new InitialContext();
  Context envCtx = (Context)initCtx.lookup("java:comp/env");
  //DataSource ds = (DataSource)envCtx.lookup("jdbc/HanatourMySQL");
  DataSource ds = (DataSource)envCtx.lookup("jdbc/testDB");  
  return ds.getConnection();
 }

 
public void updateCity(City city) throws Exception{
       Connection conn = null;
       CallableStatement cs3 = null;
     try{
    
       conn=getConnection();
      
       String sql = "{call PKG_INFO_ADMIN.SPL_AD_33100(?,?,?,?,?,?,?,?,?,?,?)}";  // 프로시저 또는 패키지 호출
     //EXEC PKG_INFO_ADMIN.SPL_AD_33100('BC8','테스트','TEST1','BC8, 테스트, TEST, 테스트 목적입니다.','N','N','+0900','2008/01/01 00:00','2008/12/10 00:00',0,'');
        cs3 = conn.prepareCall(sql);
        cs3.setString(1,city.getCityCode());
        cs3.setString(2,city.getCityKname());
        cs3.setString(3,city.getCityEname());
        cs3.setString(4,city.getSearchCityName());
        cs3.setString(5,city.getCountryCapitalYn());
        cs3.setString(6,city.getStateCapitalYn());
        cs3.setString(7,city.getGmtTime());
        cs3.setString(8,city.getDstStartDate());         
        cs3.setString(9,city.getDstEndDate());   // 여기까지는 IN
        cs3.registerOutParameter(10,java.sql.Types.INTEGER);
        cs3.registerOutParameter(11,java.sql.Types.VARCHAR);    // 여기까지는 OUT 오라클 프로시져 또는 패키지 실행 후 리턴값 받기
                    
           cs3.executeUpdate();  // 쿼리 실행시키고
           
           int outParameter1 = cs3.getInt(10);
           String outParameter2 = cs3.getString(11);  // 값 받아 주시고

      }catch(SQLException ex){
     System.out.println("false");
         System.out.println("Exception" + ex);
        }finally{
        if(cs3  != null) try {cs3.close();} catch(SQLException ex){}
        if(conn  != null) try {conn.close();} catch(SQLException ex){}
         }
     }
 }

 

 

리턴값 받아서 프로시져 or 패키지에서 처리함