2014-07-14 1 views
0

나는 SYS_REFCURSOR 반환 일부 오라클 기능이 있습니다어떻게 반환 오라클 기능의 선택 쿼리를지도로 커서

CREATE OR REPLACE FUNCTION SOME_PKG.SOME_FUNCION() 
    RETURN SYS_REFCURSOR 
AS 
    REF_TEST SYS_REFCURSOR; 
BEGIN 
    OPEN REF_TEST FOR 
     SELECT COLUMN_ID, COLUMN_NAME 
     FROM SOME_TABLE; 
    RETURN REF_TEST; 
END; 

자바 콩 :

public class Product { 

    private String id; 
    private String name; 

    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 
} 

자바 매퍼 인터페이스 :

public interface ProductMapper { 
    List<Product> getAll(); 
} 

ProductMapper.xml :

수동으로 내가 하나의 널 (null) 요소 목록을 받기 "를 getAll"방법을 호출 한 후 3 개 기록

을 반환

... 
<resultMap id="productResults" type="Product"> 
    <result property="id" column="COLUMN_ID" /> 
    <result property="name" column="COLUMN_NAME" /> 
</resultMap> 

<select id="getAll" resultMap="productResults"> 
    select SOME_PKG.SOME_FUNCION from dual 
</select> 

내가 SQL 쿼리를 실행하면 (210)는 "듀얼로부터 SOME_PKG.SOME_FUNCION을 선택합니다."

나는

나는 정확한 결과를 얻기 위해 무엇을해야 MyBatis로 3.2.3를 사용하고 있습니다? 그

<update id="getAll" statementType="CALLABLE"> 
     { #{holder.products, jdbcType=CURSOR, mode=OUT, resultMap=productResults, javaType=java.sql.ResultSet} = call SOME_PKG.SOME_FUNCION() } 
</update> 

좋아하지만 제품부터

답변

1

경우 당신은 결과 세트를 사용 업데이트 태그를 기대하고 호출 할 기능은 대부분의 아마 당신이 매퍼

을 수정해야합니다, 그것은 하나로 전달해야 OUT 매개 변수입니다
public class Holder { 
    public List<Products> products; 
} 

public class Mapper { 
    void getAll(Holder holder); 
}