2012-03-16 3 views
1

Spring JdbcTemplate을 사용하여 Java에서 OS400/DB2 저장 프로 시저 출력 매개 변수에 액세스하려고 시도했습니다. 내 저장 프로 시저의 마지막 매개 변수는 입력/출력 매개 변수입니다. 레코드가 업데이트되면 기본 프레임에서 "Y"가 반환됩니다. 누군가가 나에게 저장 프로 시저에서 값을 다시 얻으려면Spring JdbcTemplate을 사용하여 Java에서 OS400/DB2 저장 프로 시저 출력 매개 변수에 액세스하려고 시도했습니다.

XmlBeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("as400.xml")); 
DataSource ds = (DataSource) beanFactory.getBean("dataSource"); 
jdbc = new JdbcTemplate(ds); 
int res= jdbc.update("{CALL TESTONE(?,?)}", new Object[] { new String("JOHN"), new String("N") }); 

답변

1

을 2 매개 변수를 액세스하고는 "Y"인지 확인하는 방법에 가까이주세요 수, 당신은 StoredProcedure를 확장 자신의 클래스를 작성해야 당신의 매개 변수를 선언 한 다음 execute 호출에서 반환되는 출력 매개 변수 검사 :

public final class MyProc extends StoredProcedure { 

    public MyProc() { 
     super(myDataSource, "TESTONE"); 
     declareParameter(new SqlParameter("param1", Types.CHAR)); 
     declareParameter(new SqlOutParameter("param2", Types.CHAR)); 
    } 

    public String execute(Map<?, ?> inParams) { 
     Map results = super.execute(inParams); 
     return (String) results.get("param2"); 
    } 
} 
+0

은 그래서 JdbcTemplate을 사용할 수 없습니다를? 그리고 마지막 파라가 입출력이라면? – SJS

+0

불행히도, 아니요. JdbcTemplate은 out 매개 변수의 값을 검사하는 것을 지원하지 않습니다. in/out 매개 변수의 경우, 대신'declareParameter (new SqlInOutParameter (...))' – highlycaffeinated

+0

트위터에 당신은 감사합니까? JohnathanMSmith – SJS