[펌글] Java에서 Stored Procedure 사용하기 2

By | 7월 23, 2008

JAVA와 SP를 연동하기 위해선....

1. CallableStatement Interface Load

    : 지금까지는 일반 qeury만 날리다 보니 습관적으로 PrepareStatement를 써왔는데 sp를 쓰기 위해서 CallableStatement의    

      prepareCall이 필요하다.

      cstmt = con.prepareCall("{call EBZ_USP_ERPINTERFACE_JAVA(?,?,?,?)}");

      call 다음에 프로시저명을 입력하고 ?,?,?,? 은 입력이든 출력이든 갯수를 맞춰야된다.
      갯수가 맞지않으면 Binding Runtime Error 발생.

     

2.   JDBC는 일반 쿼리날릴때 쓰던거 그대로...(예제는 앞 게시물에..^^;;)

3.   sp에 인자값을 out NUMBER로 지정했기 때문에 아래와 같이 INTEGER 타입으로 지정해서 실행한다.

         cstmt.registerOutParameter(1, Types.INTEGER);
         cstmt.registerOutParameter(2, Types.INTEGER);
         cstmt.registerOutParameter(3, Types.INTEGER);
         cstmt.registerOutParameter(4, Types.INTEGER);

         실행명령어는 execute, executeUpdate 두가지가 실행명령어이다. 암거나 사용해도 무방.

4. example

/************************************************************
** FileName  : ProceQuery.java
************************************************************/

import java.sql.Statement;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.CallableStatement;
import java.sql.SQLException;
import java.sql.Types;

class ProceQuery{
 private CallableStatement cstmt = null;
 private Connection con = null;
 static String xcount[] = new String[4];

 /* B2B Method Query */
 public void B2B(){
  con = DBConnect.DbConnection();
  try{
   int j=1;

         cstmt = con.prepareCall("{call EBZ_USP_ERPINTERFACE_JAVA(?,?,?,?)}");
         cstmt.registerOutParameter(1, Types.INTEGER);
         cstmt.registerOutParameter(2, Types.INTEGER);
         cstmt.registerOutParameter(3, Types.INTEGER);
         cstmt.registerOutParameter(4, Types.INTEGER);
                            
   cstmt.execute(); // or cstmt.executeUpdate();

   for(int i=0;i<4;i++){
    xcount[i] = Integer.toString(cstmt.getInt(j));
    j++;
   }
   con.close();cstmt.close();
  }catch(SQLException e1){}
 }
}

 - 출처 : http://blog.naver.com/woong1277/52117914 -

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments