2011-09-02 2 views
2

하나의 정수 출력 매개 변수와 5 개의 varchar 입력 매개 변수가있는 저장 프로 시저가 있습니다. 어떤 것이 든 시도했지만 출력 매개 변수를 다시 얻을 수 없습니다. 나는 DB에서 sproc을 실행했고 데이터로 돌아와서 내가 잘못한 것을 볼 수 없다.simplejdbccall의 출력 param

누구나 simplejdbccall에서 출력 매개 변수를 가져 오는 방법을 알고 있습니까?

나는 이런 식으로 뭔가를 가지고 :

SimpleJdbcCall simpleJdbcCall = 
     new SimpleJdbcCall(getDatasourceForEnvironment()).withProcedureName("_Get_Id").declareParameters(
      new SqlParameter("MyID", Types.VARCHAR), new SqlParameter("MySourceID", Types.VARCHAR), 
      new SqlParameter("MyLocationID", Types.VARCHAR), new SqlParameter("MyVisitID", Types.VARCHAR), 
      new SqlParameter("MyVisitDate", Types.VARCHAR)); 

    HashMap< String, String > input = new HashMap< String, String >(); 
    input.put("MyID", myObj.getMyID()); 
    input.put("MySourceID", myObj.getMySourceID()); 
    input.put("MyLocationID", myObj.getMyLocationID()); 
    input.put("MyVisitID", myObj.getMyVisitID()); 
    input.put("MyVisitDate", myObj.getMyVisitDate()); 

    System.out.println(simpleJdbcCall.execute(input)); 

답변

2

내가 잘못했다 2 일이 있었다 : 나는 잘못된 데이터베이스에 연결 한

  1. 가. 더 세분화 된 단위를 쓰면 테스트 결과에 오류가 나타났습니다.

  2. "실행"의 반환 값이 맵이기 때문에 출력 매개 변수는 입니다.

간단히 말하면, 특별히 필요한 것은 없습니다. Spring은 기본적으로 출력 매개 변수를 포함합니다. 또한 MapSqlParameterSource은 이러한 종류의 메소드를 사용하는 데 훨씬 더 깨끗한 방법입니다.

+0

함수 (프로 시저 아님)를 호출하고 OUT 매개 변수뿐만 아니라 반환 값을 예상하면 Spring은 기본적으로 OUT 매개 변수를 반환하지 않습니다. 가장 좋은 방법은 항상'new SqlParameter()'를'new SqlInOutParameter()'로 정의하여 spring이 반환 값으로지도의 out 매개 변수를 업데이트하도록하는 것입니다. 실적에 미치는 영향에 대해 확신하지 못함 – SashikaXP