2010-06-03 6 views
0

사용자 객체 반환 유형이있는 Oracle 11g PL/SQL 프로 시저를 호출하는 JDBC 코드를 작성하고 있습니다. 프로 시저를 호출하는 코드를 얻을 수 있지만 포함 된 값을 얻기 위해 반환 된 사용자 정의 개체에 어떻게 액세스합니까? 프로 시저를 호출 내 코드의 예는 다음과 같습니다ojdbc6에서 사용자 정의 객체 반환 유형 JDBC Thin Drivers

PLSQL 코드 :

Procedure GetDataSummary (p_my_key IN KEYS.MY_KEY%TYPE, 
          p_recordset OUT data_summary_tab, 
          p_status OUT VARCHAR2); 

자바 코드 :

String query = "begin manageroleviewdata.getdatasummary(?, ?, ?); end;"); 
CallableStatement stmt = conn.prepareCall(query); 

// Single IN parameter 
stmt.setInt(1, 83); 

// Two OUT parameters, one a Custom Object, the other a VARCHAR 
stmt.registerOutParameter(2, OracleTypes.ARRAY, "DATA_SUMMARY_TAB"); 
stmt.registerOutParameter(3, OracleTypes.VARCHAR); 

stmt.execute(stmt); 

가 어떻게 다시이 결과를 전면 데크받을 수 있나요?

답변

1

우리는 그것을 금했습니다

우리의 경우
oracle.sql.ARRAY result2 = (oracle.sql.ARRAY) stmt.getObject(2); 
ResultSet rs = result2.getResultSet(); 
oracle.sql.STRUCT elements = (oracle.sql.STRUCT) rs.getObject(2); 
String result = null; 
if (elements != null) { 
    Object[] objs = elements.getAttributes(); 
    result = objs[2]; 
} 
System.out.println("Result: " + result); 

이 우리의 사용자 정의 개체 유형에 세 번째 요소를 출력합니다.