<CAL> 유형 오브젝트의 OUTINOUT 매개변수

SQL CALL문을 실행할 때 OUTINOUT 매개변수의 값을 유형 <CAL>의 오브젝트에 리턴할 수 있습니다.
<CAL> 유형의 오브젝트는 이 버전의 Data 인터페이스의 call() 메소드에 의해 리턴됩니다.
<CAL> T call(java.lang.String sql, CallHandlerWithParameters<CAL> callHandlerWithParameters, Object... parameters)

이 버전의 Data 인터페이스의 call() 메소드를 사용하여, CallHandlerWithParameters 오브젝트는 스토어드 프로시저가 리턴하는 쿼리 결과 또는 갱신 계수 처리에 관여합니다. 해당 정보는 리턴된 일반 <CAL> 오브젝트를 통해 사용 가능하게 되는 경우를 제외하고 call() 메소드를 호출한 애플리케이션에 사용할 수 없습니다.

CallHandlerWithParameters 오브젝트는 스토어드 프로시저의 OUTINOUT 매개변수를 처리하여 결과 <CAL> 오브젝트에 통합하는 데 관여합니다. 또한 해당 정보는 리턴된 일반 <CAL> 오브젝트를 통해 사용 가능하게 되는 경우를 제외하고 call() 메소드를 호출한 애플리케이션에 사용할 수 없습니다.

CallHandlerWithParameters 오브젝트가 call() 메소드의 호출에서 전달되는 임의의 Bean 또는 Map 매개변수를 갱신해야 하는 경우, 해당 매개변수를 CallHandlerWithParameters 오브젝트의 handleCall() 메소드로 갱신해야 합니다. CallHandlerWithParameters 오브젝트가 있는 경우, pureQuery는 이러한 갱신을 수행하지 않습니다.

예를 들어, 세 개의 IN 매개변수, 0개의 OUT 매개변수 및 약간의 리턴된 쿼리 결과와 이를 처리하기 위한 CallHandlerWithParameters 오브젝트가 있도록 정의된 스토어드 프로시저를 고려하십시오. CallHandlerWithParameters<CAL>을 구현하는 클래스는 다음과 같이 정의됩니다.

public class mapHandler 
         implements CallHandlerWithParameters<Map<String, Object>>
{
  Map <String, Object> handleCall (CallableStatement cstmt, Object... parameters) throws SQLException
  {
   ...
     }
}

다음과 같이 call() 메소드를 호출할 수 있습니다.

Connection con = DriverManager.getConnection(...);
Data db = DataFactory.getData(con);
mapHandler chOne = new mapHandler();

Map<String, Object> diffMap = db.call( 
     "CALL getReports(?,?,?)", chOne, p1, p2, p3 );

피드백