2009-09-24 2 views
1

을 설정합니다. 그러나 DefaultLobHandler (그리고 저는 OracleLobHandler라고 생각합니다) getBlobAsBytes()는 결과 집합을 필요로합니다.내가 출력 매개 변수에 BLOB를 반환하는 Oracle 저장 프로 시저를

private static class QueryForBinaryCryptKey extends StoredProcedure { 

     private static final String SQL = "IMAGE_PKG.GET_IMAGE_DATA"; 
     private DefaultLobHandler lobHandler; 

     QueryForImageData(DataSource dataSource) { 
      super(dataSource, SQL); 
      setFunction(false); 
      lobHandler = new DefaultLobHandler(); 

      declareParameter(new SqlParameter(KEY_TYPE, OracleTypes.NUMBER)); 
      declareParameter(new SqlOutParameter(KEY_BLOB, OracleTypes.BLOB)); 

     } 

     public Map getImage(int keyType) { 
      Map outParams = super.execute(inParams(keyType)); 
        //how can I get the contents of the blob right here since 
        //getBlobAsBytes requires a resultSet??? 
      return outParams; 
     } 

     private Map inParams(int keyType) { 
      Map params = new HashMap(); 
      params.put(KEY_TYPE, new Integer(keyType)); 
      return params; 
     } 
    } 
나는 내가 가진 모든 out 매개 변수가 아닌 결과 집합입니다 BLOB 데이터를 얻을 수있는 방법

?

답변

1

JDBC 봄 API (DefaultLobHandlerOracleLobHandler)에는 BLOB 관련 메소드에 대해 ResultSet 객체가 필요합니다.

당신은 기능으로 GET_IMAGE_DATA절차 변환해야합니다

FUNCTION ATTACHMENT_BLOB_GET(IN_IMAGE_TYPE IN IMAGES.IMAGE_TYPE%TYPE) 
RETURN SYS_REFCURSOR AS 

results_cursor SYS_REFCURSOR; 

BEGIN 

    OPEN results_cursor FOR 
    SELECT t.image_data 
     FROM IMAGES t 
     WHERE t.image_type = IN_IMAGE_TYPE; 

    RETURN results_cursor; 

END; 

OUT 매개 변수에 BLOB 특히, 일부 슬픔 항상 좋다.

0

ResultSet없이 Stream/byte []로 Blob을 읽을 수 있습니다. 밖으로 this을 확인하십시오.

관련 문제