返回值有游标

1、xml
<resultMap id="caseListCur" class="java.util.HashMap">
    <result property="claimNo" column="claim_no" />
    <result property="caseReporterName" column="case_reporter_name" />
    <result property="caseReportDate" column="case_report_date" />
    <result property="accidentDate" column="accident_date" />
    <result property="caseReporterType" column="case_reporter_type" />
    <result property="accidentAddr" column="accident_addr" />
    <result property="hospitalCode" column="hospital_code" />
    <result property="bedNo" column="bed_no" />
    <result property="departmentCode" column="medical_department_code" />
    <result property="departmentName" column="medical_department_name" />
    <result property="hospitalName" column="hospital_name" />
    <result property="statusCode" column="status_code" />
    <result property="caseStatus" column="case_status" />
    <result property="registUsername" column="regist_username" />
    <result property="areaCode" column="area_code" />
</resultMap>
<parameterMap id="queryCaseByClientNoMap" class="java.util.HashMap">
    <parameter property="clientNo" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"></parameter>
    <parameter property="case_cursor" jdbcType="ORACLECURSOR" javaType="cursor" mode="OUT" resultMap="caseListCur"></parameter>
    <parameter property="flag" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT" ></parameter>
    <parameter property="message" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT" ></parameter>       
</parameterMap>   
<procedure id="queryCaseByClientNo" parameterMap="queryCaseByClientNoMap">
    <![CDATA[
        {call l_claim_pub_interface.query_case_by_client_no(?,?,?,?)}       
    ]]>
</procedure>

2、java
public List<Map> queryCaseByClientNo(String clientNo) {
    HashMap pMap = new HashMap();
    pMap.put("clientNo", clientNo);
    getSqlMapClientTemplate().queryForObject(ClaimCommonDao.class.getName() + ".queryCaseByClientNo", pMap);
    List caseList = (List)pMap.get("case_cursor");
    return caseList;
}

3、pkg
  PROCEDURE query_case_by_client_no(
    p_client_no                 IN     clm_claim_info.client_no%TYPE,
    p_claim_info_cursor         OUT    SYS_REFCURSOR,
    p_flag                      OUT    VARCHAR2,
    p_message                   OUT    VARCHAR2)
  IS
  BEGIN
    p_flag := 'Y';
    IF p_client_no IS NULL THEN
      p_flag := 'N';
      p_message := '客户号不能为空';
      RETURN;
    END IF;
    OPEN p_claim_info_cursor FOR
    SELECT a.claim_no                  claim_no,
           a.case_reporter_name        case_reporter_name,
           a.case_report_date          case_report_date,
           a.accident_date             accident_date,
           a.case_reporter_type        case_reporter_type,
           a.accident_addr             accident_addr,
           b.hospital_code             hospital_code,
           b.bed_no                    bed_no,
           b.department_code           medical_department_code,
           d.department_name           medical_department_name,
           c.hospital_name             hospital_name,
           e.status_code               status_code,
           f.description               case_status,
           a.regist_username           regist_username,
           a.area_code
      FROM clm_case_report_info        a,
           clm_case_report_medicalinfo b,
           hospital_information        c,
           medical_department          d,
           clm_claim_info              e,
           clm_case_status_tbl         f
     WHERE a.claim_no = b.claim_no
       AND b.hospital_code = c.hospital_code(+)
       AND b.department_code = d.department_code(+)
       AND f.status_code = e.status_code
       AND e.claim_no = a.claim_no
       AND a.data_source = b.data_source
       AND a.data_source = '2'
       AND e.client_no = p_client_no
    UNION ALL
    SELECT a.claim_no                  claim_no,
           a.case_reporter_name        case_reporter_name,
           a.case_report_date          case_report_date,
           a.accident_date             accident_date,
           a.case_reporter_type        case_reporter_type,
           a.accident_addr             accident_addr,
           b.hospital_code             hospital_code,
           b.bed_no                    bed_no,
           b.department_code           medical_department_code,
           d.department_name           medical_department_name,
           c.hospital_name             hospital_name,
           e.status_code               status_code,
           f.description               case_status,
           a.regist_username           regist_username,
           a.area_code
      FROM clm_case_report_info        a,
           clm_case_report_medicalinfo b,
           hospital_information        c,
           medical_department          d,
           clm_claim_info              e,
           clm_case_status_tbl         f
     WHERE a.claim_no = b.claim_no
       AND b.hospital_code = c.hospital_code(+)
       AND b.department_code = d.department_code(+)
       AND f.status_code = e.status_code
       AND e.claim_no = a.claim_no
       AND a.data_source = b.data_source
       AND a.data_source = '1'
       AND e.client_no = p_client_no
       AND NOT EXISTS(SELECT 'X'
                        FROM clm_case_report_info t
                       WHERE t.claim_no = a.claim_no
                         AND t.data_source = '2')
     ORDER BY accident_date DESC;
  EXCEPTION
    WHEN OTHERS THEN
      DECLARE
         v_error_code      VARCHAR2 (4000);
         v_comments        VARCHAR2 (4000);
         v_program_id      VARCHAR2 (50) := 'query_case_by_client_no';
         v_error_message   VARCHAR2 (4000);
      BEGIN
         v_error_code := NULL;
         v_comments := NULL;
         pub_error_handle.exception_no_raise(v_program_id,
                                             v_error_code,
                                             v_comments,
                                             v_error_message);
         p_flag := 'N';
         p_message := 'query_case_by_client_no发生后台异常,具体原因请查看后台异常处理日志。';
      END;
  END query_case_by_client_no;














评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值