oracle写存储过程ssm中调用存储过程

在package中定义存储过程

create or replace package PEIS_ReportPictureManage is

  type ref_cur is ref cursor;

  procedure YW_QueryPic(paraTJH000 in varchar2,
                        paraBMBH00 in varchar2,
                        cur_Pic out ref_cur,
                        cur_SFXMJG out ref_cur);

  procedure YW_QueryReportPic(paraTJH000 in varchar2,
                              paraBMBH00 in varchar2,
                              paraSFDY00 in varchar2,
                              paraSFDL00 in varchar2,
                              cur_Pic out ref_cur,
                              cur_SFXMJG out ref_cur);

  function YW_JudgeBBWCJ(paraTJH000 in number,
                         paraBMBH00 in number)
  return number;

  procedure QueryPictureDept(paraTJH000 in number,
    paraBMBH00 in varchar2,
    cur_PictureDept out ref_cur);

  procedure queryJCXMTX(paraTJH000 in number,
                        cur_BMBH out ref_cur,
                        cur_CSTP out ref_cur);

  procedure SavePicToDB(paraTJH000 in number,
                        paraBMBH00 in number,
                        paraKSLX00 in varchar2,
                        paraSFCS00 in char,
                        paraTPBT00 in varchar2,
                        paraTPFX00 in varchar2,
                        paraTP0000 in blob);

  procedure queryPicForFrx(paraTJH000 in number,
                           paraBMBH00 in number,
                           paraOPFLAG in varchar2,
                           cur_Image out ref_cur,
                           cur_CSXM00 out ref_cur,
                           cur_CSJCXM out ref_cur);

  --查询检查项目图像
  procedure queryExamItemPicture(paraTJH000 in number,
    paraJCKSID in number,
    cur_ExamItemPicture out ref_cur,
    cur_ExamArea out ref_cur);

  --检查项目图像操作
  function examItemPictureOperate(paraOPFLAG in number,
    paraTJH000 in number,
    paraBMBH00 in number,
    paraKSLX00 in varchar2,
    paraJCBW00 in varchar2,
    paraBDY000 in varchar2,
    paraTPBT00 in varchar2,
    paraCZY000 in number)return varchar2;

  procedure queryPicFromOtherSysTable(paraTJH000 in number,
                                      paraDSFBM0 in varchar2, --此处代表 第三方表名
                                      paraTJLM00 in varchar2,  --此处代表 第三方表中的搜索条件列
                                      paraTPLM00 in varchar2,
                                      cur_Pic    out ref_cur);

  --复制科室图片
  procedure CopyDeptPicture(paraTJH000 in number,
    paraTOTJH0 in number,
    paraYKSID0 in number,
    paraTOKSID in number,
    paraTPBT00 in varchar2,
    paraTSXX00 out varchar2,
    cur_ExamItemPicture out ref_cur,
    cur_PictureServer out ref_cur);

  procedure QueryPersonDeptInfo(paraTJH000 in number,
    paraCZY000 in number,
    cur_PersonDeptInfo out ref_cur);

  --删除接口图片
  function DeleteInterfacePicture(paraTJH000 in number,
    paraBMBH00 in number,
    paraTPLJ00 in varchar2)return varchar2;

end PEIS_ReportPictureManage;

在package body中写实际的存储过程

create or replace package body PEIS_ReportPictureManage is

  --此过程为人民医院报告打印接口过程,慎改
  procedure YW_QueryPic(paraTJH000 in varchar2,
                        paraBMBH00 in varchar2,
                        cur_Pic out ref_cur,
                        cur_SFXMJG out ref_cur)is
  begin
    open cur_Pic for
      select 0 NX,
             A.TJH000,
             B.YXLX00 KSLX00,
             A.BMBH00,
             min(SFYWID) SFYWID,
             min(JCID00) JCID00,
             B.JKMS00,
             B.DSFPZ0,
             B.FTPPZ0,
             B.FTPYHM,
             B.FTPMM0,
             B.MS0000,
             B.MBFS00,
             C.TJDM00,
             B.YXMBM0,
             B.JKZJBM,
             B.FTPDKH,
             B.TPFX00,
             B.FTPURL,
             B.FKBGMB,
             nvl(B.SFDGMB,'0') SFDGMB,
             (select BMMC00 from BM_BMBM00 where BMBH00 = A.BMBH00) BMMC00
        from SY_PE_YWSJ_TJJCXM a, SY_PE_YWZD_YXPZB0 b, SY_PE_YWSJ_TJZ000 c
       where A.BMBH00 = B.BMBH00
         and A.TJH000 = C.TJH000
         and A.TJH000 = paraTJH000
         and B.SFYX00 = '1'
         and A.BMBH00 = nvl(paraBMBH00, A.BMBH00)
         and YW_JudgeBBWCJ(A.TJH000,B.BMBH00) = 1
       group by A.TJH000,
                A.BMBH00,
                B.YXLX00,
                B.JKMS00,
                B.DSFPZ0,
                B.FTPPZ0,
                C.TJDM00,
                B.MS0000,
                B.MBFS00,
                B.YXMBM0,
                B.FTPYHM,
                B.FTPMM0,
                B.JKZJBM,
                B.FTPDKH,
                B.FTPURL,
                B.TPFX00,
                B.FKBGMB,
                B.SFDGMB;

    open cur_SFXMJG for
      select A.*, (
        select BMMC00 from BM_BMBM00 where BMBH00 = A.BMBH00) BMMC00 from(
          select distinct TJH000, TPLJ00, BMBH00, 0 TPLY00, '1' BDY000
            from VW_PE_SFXMJG
           where TJH000 = paraTJH000
             and BMBH00 = nvl(paraBMBH00, BMBH00)
          union all
            select TJH000,  A.KSLX00||'/'||A.CTRQ00||'/'||to_char(A.TJH000)||'/'||A.TPBT00 TPXDLJ,
                   BMBH00, 1 TPLY00, BDY000
              from SY_PE_YWSJ_JCXMTX A
             where TJH000 = paraTJH000
               and BMBH00 = nvl(paraBMBH00, BMBH00)
             )A;
  end;

  procedure YW_QueryReportPic(paraTJH000 in varchar2,
                              paraBMBH00 in varchar2,
                              paraSFDY00 in varchar2,
                              paraSFDL00 in varchar2,
                              cur_Pic out ref_cur,
                              cur_SFXMJG out ref_cur)is
  begin
    open cur_Pic for
      select * from (
        select 0 NX,
               A.TJH000,
               B.YXLX00 KSLX00,
               A.BMBH00,
               min(SFYWID) SFYWID,
               min(JCID00) JCID00,
               B.JKMS00,
               B.DSFPZ0,
               B.FTPPZ0,
               B.FTPYHM,
               B.FTPMM0,
               B.MS0000,
               B.MBFS00,
               C.TJDM00,
               B.YXMBM0,
               B.JKZJBM,
               B.FTPDKH,
               B.TPFX00,
               B.FTPURL,
               B.FKBGMB,
               B.DYJ000,
               nvl(B.SFDGMB,'0') SFDGMB,
               (select PXXH00 from BM_BMBM00 where BMBH00 = A.BMBH00) PXXH00,
               (select BMMC00 from BM_BMBM00 where BMBH00 = A.BMBH00) BMMC00
          from SY_PE_YWSJ_TJJCXM a, SY_PE_YWZD_YXPZB0 b, SY_PE_YWSJ_TJZ000 c
         where A.BMBH00 = B.BMBH00
           and A.TJH000 = C.TJH000
           and A.TJH000 = paraTJH000
           and B.SFYX00 = '1'
           and A.BMBH00 = nvl(paraBMBH00, A.BMBH00)
           and ((paraSFDL00 = 0)
                 or (paraSFDL00 = 1 and B.SFDLDY = 0)
                 or (paraSFDL00 = 2 and B.SFDLDY = 1))
           and YW_JudgeBBWCJ(A.TJH000,B.BMBH00) = 1
         group by A.TJH000,
                  A.BMBH00,
                  B.YXLX00,
                  B.JKMS00,
                  B.DSFPZ0,
                  B.FTPPZ0,
                  C.TJDM00,
                  B.MS0000,
                  B.MBFS00,
                  B.YXMBM0,
                  B.FTPYHM,
                  B.FTPMM0,
                  B.JKZJBM,
                  B.FTPDKH,
                  B.FTPURL,
                  B.TPFX00,
                  B.FKBGMB,
                  B.SFDGMB,
                  B.DYJ000
      ) order by PXXH00;

    open cur_SFXMJG for
      select A.*, (
        select BMMC00 from BM_BMBM00 where BMBH00 = A.BMBH00) BMMC00 from(
          select distinct TJH000, TPLJ00, BMBH00, 0 TPLY00, '1' BDY000
            from VW_PE_SFXMJG
           where TJH000 = paraTJH000
             and BMBH00 = nvl(paraBMBH00, BMBH00)
          union all
            select TJH000,  A.KSLX00||'/'||A.CTRQ00||'/'||to_char(A.TJH000)||'/'||A.TPBT00 TPXDLJ,
                   BMBH00, 1 TPLY00, BDY000
              from SY_PE_YWSJ_JCXMTX A
             where TJH000 = paraTJH000
               and BMBH00 = nvl(paraBMBH00, BMBH00)
               and (nvl(paraSFDY00, '0') = '0' or (paraSFDY00 = '1' and BDY000 = '1'))
             )A;
  end;

  function YW_JudgeBBWCJ(paraTJH000 in number,
                         paraBMBH00 in number)
  return number
  as
    vCount number;
    vResult number;
  begin
    vResult:= 1;
    if paraBMBH00 = 11 then
      select count(1) into vCount from SY_PE_YWSJ_TJZFJ0 where TJH000 = paraTJH000 and WCCJDD = '2';
      if vCount > 0 then
        vResult:= 0;
      end if;
    end if;
    return vResult;
  end;

  --查询影像科室
  procedure QueryPictureDept(paraTJH000 in number,
    paraBMBH00 in varchar2,
    cur_PictureDept out ref_cur)is
  begin
    open cur_PictureDept for
      with VW_PIC as
      (select distinct BMBH00 from(
          select BMBH00
          from VW_PE_SFXMJG where TJH000 = paraTJH000 and BMBH00 = nvl(paraBMBH00, BMBH00)
          union all
          select BMBH00
          from SY_PE_YWSJ_JCXMTX A where TJH000 = paraTJH000 and BMBH00 = nvl(paraBMBH00, BMBH00) and BDY000 = '1'))
          select A.*, (select BMMC00 from BM_BMBM00 where BMBH00 = A.BMBH00) BMMC00,
          (select YXLX00 from BM_BMBM00 where BMBH00 = A.BMBH00) YXLX00 from VW_PIC A;
  end;

  procedure queryJCXMTX(paraTJH000 in number,
                        cur_BMBH out ref_cur,
                        cur_CSTP out ref_cur) is
  begin
    open cur_BMBH for
      select distinct BMBH00 from VW_PE_JCXMTX a
        where TJH000 = paraTJH000
        and BDY000 = '1'
        and exists (select 1 from  SY_PE_YWZD_YXPZB0 where a.bmbh00=bmbh00 and MBFS00='0');

      open cur_CSTP for
      select * from VW_PE_JCXMTX a
        where TJH000 = paraTJH000
        and BDY000 = '1'
        and exists (select 1 from  SY_PE_YWZD_YXPZB0 where a.bmbh00=bmbh00 and MBFS00='0');
  end;

  procedure queryItems(paraTJH000  in number,
                       paraBMBH00  in number,
                       cur_SFXMJG out ref_cur) is
  begin
     open cur_SFXMJG for
        select * from VW_PE_SFXMJG where TJH000=paraTJH000 and BMBH00=paraBMBH00;
  end;

  procedure SavePicToDB(paraTJH000 in number,
                        paraBMBH00 in number,
                        paraKSLX00 in varchar2,
                        paraSFCS00 in char,
                        paraTPBT00 in varchar2,
                        paraTPFX00 in varchar2,
                        paraTP0000 in blob)is
  begin
    delete from SY_PE_TMP_PDFReportPic where TJH000 = paraTJH000 and BMBH00 = paraBMBH00
      and KSLX00 = paraKSLX00 and TPBT00 = paraTPBT00;
    insert into SY_PE_TMP_PDFReportPic(Tjh000, Bmbh00, Kslx00, SFCS00, Tpbt00, Tp0000, Tpfx00)
    values(paraTJH000, paraBMBH00, paraKSLX00, paraSFCS00, paraTPBT00,paraTP0000,paraTPFX00) ;--return Tp0000 into b_lob;
    commit;
  end;

  procedure queryPicForFrx(paraTJH000 in number,
                           paraBMBH00 in number,
                           paraOPFLAG in varchar2,
                           cur_Image out ref_cur,
                           cur_CSXM00 out ref_cur,
                           cur_CSJCXM out ref_cur)is
  begin
      --图片
    open cur_Image for
      select * from SY_PE_TMP_PDFREPORTPIC where tjh000 = paraTJH000 and (paraBMBH00 is null or BMBH00 = paraBMBH00);
    if paraOPFLAG = '0' then
      --超声项目
      open cur_CSXM00 for
        select a.TJH000, A.XM0000, to_char(to_date(A.DJRQ00,'yyyy-mm-dd'),'yyyy-mm-dd') DJRQSJ,
            A.XBMC00, A.NL0000, (select ZWXM00 from BM_YGBM00 where YGBH00 = B.KDYSID) KDYSXM,
            A.BMBH00, A.BMMC00, A.KSXJ00, A.SHRQGG, A.YSXM00 KSYSXM, A.YSXM00, A.KSRQGG,
            SF_PE_GetSQXMMC(a.TJH000, a.bmbh00) SQXMMC,
        (select QM0000 from BM_YGBM00 where YGBH00 = A.KSYS00) QM0000
          from VW_PE_TJFKJC a, SY_PE_YWSJ_TJZ000 B
         where A.TJH000 = B.TJH000
           and A.TJH000 = paraTJH000
           and a.BMBH00 = paraBMBH00;

        --超声检查项目
      open cur_CSJCXM for
        select a.* from VW_PE_JCXMBG a where TJH000 = paraTJH000
             and a.BMBH00 = paraBMBH00 and TZCMS0 is not null order by SQXMXH,JCXMXH;
    end if;
  end;

  --查询检查项目图像
  procedure queryExamItemPicture(paraTJH000 in number,
    paraJCKSID in number,
    cur_ExamItemPicture out ref_cur,
    cur_ExamArea out ref_cur)
  is
  VSFSH00 number;
  VYYID00 SY_PE_YWSJ_TJZ000.YYID00%type;
  VQFYTXM XT_XTCS00.VALUE0%type;
  begin
    select YYID00 into VYYID00 from SY_PE_YWSJ_TJZ000 where TJH000 = paraTJH000;
    select sf_pe_getxtcs('PE_FKXTMS', '0', VYYID00) into VQFYTXM from dual;
    if VQFYTXM = '1' then
      --是否有图项目
      select decode(count(1), 0, 1, 0) into VSFSH00
         from SY_PE_YWSJ_TJYW00 A, SY_PE_YWZD_TJSQXM B where A.SQXMID = B.SQXMID
         and A.TJH000 = paraTJH000 and A.JCKSID = paraJCKSID and (nvl(BBLXID,0) <> 0);
    else
      VSFSH00 := 0;
    end if;
    if VSFSH00 = 0 then
      select decode(count(1), 0, 0, 1) into VSFSH00
             from SY_PE_YWSJ_TJFKJC where TJH000 = paraTJH000 and BMBH00 = paraJCKSID and KSSH00 = '1';
    end if;
    open cur_ExamArea for
      select distinct BBLXID, BBLXMC, YXLX00 from SY_PE_YWSJ_TJYW00 A, VW_PE_SQXM00 B
          where A.TJH000 = paraTJH000 and JCKSID = paraJCKSID and A.SQXMID = B.SQXMID and SFJCXM = '1'
          and  BBLXMC is not null;

     open cur_ExamItemPicture for
       select TJH000, BMBH00, JCBW00, BDY000, KSLX00, CTRQ00, TPBT00, VSFSH00 SFSH00, SFYWID, KSLX00 YXLX00
          from VW_PE_JCXMTX where TJH000 = paraTJH000 and BMBH00 = paraJCKSID;
  end;

  --检查项目图像操作
  function examItemPictureOperate(paraOPFLAG in number,
    paraTJH000 in number,
    paraBMBH00 in number,
    paraKSLX00 in varchar2,
    paraJCBW00 in varchar2,
    paraBDY000 in varchar2,
    paraTPBT00 in varchar2,
    paraCZY000 in number)return varchar2
  is
  VKSLX00 BM_BMBM00.KSLX00%type;
  VTPXDLJ SY_PE_YWSJ_JCXMTX.TPXDLJ%type;
  VSFYWID SY_PE_YWSJ_JCXMTX.SFYWID%type;
  VJCID00 SY_PE_YWSJ_JCXMTX.JCID00%type;
  VTPBT00 SY_PE_YWSJ_JCXMTX.TPBT00%type;
  VJCBW00 SY_PE_YWSJ_JCXMTX.JCBW00%type;
  begin
    if paraBMBH00 is not null and paraKSLX00 is null then
      select YXLX00 into VKSLX00 from BM_BMBM00 where BMBH00 = paraBMBH00;
    else
      VKSLX00 := paraKSLX00;
    end if;
    VTPBT00 := upper(paraTPBT00);
    case paraOPFLAG
      when 0 then
        select nvl(max(SFYWID),0), nvl(max(JCID00),0) into VSFYWID, VJCID00
               from SY_PE_YWSJ_TJJCXM where TJH000=paraTJH000 and BMBH00=paraBMBH00;
        VTPXDLJ := '\'|| VKSLX00 ||'\'||to_char(sysdate, 'YYYYMMDD')||'\'||paraTJH000||'\'||VTPBT00;
        insert into SY_PE_YWSJ_JCXMTX(XMTXID, TJH000, SFYWID, JCID00, TPBT00, BDY000, TPXDLJ, KSLX00, CTRQ00, BMBH00)
          select SQ_PE_YWSJ_JCXMTX_XMTXID.NextVal, paraTJH000, VSFYWID, VJCID00, VTPBT00, '0', VTPXDLJ,
           VKSLX00, to_char(sysdate, 'YYYYMMDD'), paraBMBH00 from dual
           where not exists(select 1 from VW_PE_JCXMTX where TJH000 = paraTJH000
                 and upper(TPBT00) =  VTPBT00 and KSLX00 = VKSLX00);
      when 1 then
        if paraJCBW00 is null then
          select max(BBLXID) into VJCBW00 from SY_PE_YWSJ_TJYW00 A, VW_PE_SQXM00 B --BBLXMC
              where A.TJH000 = paraTJH000 and JCKSID = paraBMBH00 and A.SQXMID = B.SQXMID
              and SFJCXM = '1' and  BBLXMC is not null;
        else
          VJCBW00 := paraJCBW00;
        end if;
        update SY_PE_YWSJ_JCXMTX set JCBW00 = VJCBW00, BDY000 = paraBDY000
          where TJH000 = paraTJH000 and KSLX00 = VKSLX00 and upper(TPBT00) = VTPBT00;
        insert into SY_PE_YWSJ_TXDYLS(LSID00, TJH000, BMBH00, YXLX00, TPBT00, SFDY00, CZY000)
           select SQ_PE_YWSJ_TXDYLS_LSID00.Nextval, paraTJH000, paraBMBH00, VKSLX00, VTPBT00,
           paraBDY000, paraCZY000 from dual;
      when 2 then
        delete from SY_PE_YWSJ_JCXMTX where TJH000 = paraTJH000 and KSLX00 = VKSLX00 and upper(TPBT00) = VTPBT00;
      end case;

      commit;
      return 'succeed';
  end;

  procedure queryPicFromOtherSysTable(paraTJH000 in number,
                                      paraDSFBM0 in varchar2, --此处代表 第三方表名
                                      paraTJLM00 in varchar2,  --此处代表 第三方表中的搜索条件列
                                      paraTPLM00 in varchar2,
                                      cur_Pic    out ref_cur)is
    aSqlStr varchar2(300);
  begin
    aSqlStr:= 'select  ''1.jpg'' TPBT00, '||paraTPLM00|| ' TP0000 '||
              ' from '||paraDSFBM0||' where '||paraTJLM00||' = '||paraTJH000;
/*    aSqlStr:= 'insert into SY_PE_TMP_PDFReportPic(Tjh000, Bmbh00, Kslx00, SFCS00, Tpbt00, Tp0000)'||
              ' select '||paraTJH000||','||paraBMBH00||','''||paraKSLX00||''',0,''1.jpg'','||paraTPLM00||
              ' from '||paraDSFBM0||' where '||paraTJLM00||' = '||paraTJH000;*/
    open cur_Pic for aSqlStr;
    commit;
  end;

  --复制科室图片
  procedure CopyDeptPicture(paraTJH000 in number,
    paraTOTJH0 in number,
    paraYKSID0 in number,
    paraTOKSID in number,
    paraTPBT00 in varchar2,
    paraTSXX00 out varchar2,
    cur_ExamItemPicture out ref_cur,
    cur_PictureServer out ref_cur)
  is
  VSFYWID SY_PE_YWSJ_TJJCXM.SFYWID%type;
  VJCID00 SY_PE_YWSJ_TJJCXM.JCID00%type;
  VYXLX00 BM_BMBM00.YXLX00%type;
  VTPBT00 varchar2(4000);
  begin
    begin
    select SFYWID, JCID00 into VSFYWID, VJCID00
           from SY_PE_YWSJ_TJJCXM where TJH000 = paraTOTJH0 and BMBH00 = paraTOKSID and rownum = 1;
     exception
       when NO_DATA_FOUND then
         paraTSXX00 := '目标科室还未开始检查,复制失败!';
         return;
       end;
     select YXLX00 into VYXLX00 from BM_BMBM00 where BMBH00 = paraTOKSID;
     if paraTPBT00 is not null then
       VTPBT00 := ','||upper(paraTPBT00)||',';
     end if;
     insert into SY_PE_YWSJ_JCXMTX(XMTXID, TJH000, SFYWID, JCID00, TPBT00, BDY000, TPXDLJ, KSLX00, CTRQ00, BMBH00)
              select SQ_PE_YWSJ_JCXMTX_XMTXID.NextVal, paraTOTJH0, VSFYWID, VJCID00, TPBT00, '0',
              '\'|| VYXLX00 ||'\'||to_char(sysdate, 'YYYYMMDD')||'\'||paraTOTJH0||'\'||TPBT00,
               VYXLX00, to_char(sysdate, 'YYYYMMDD'), paraTOKSID from SY_PE_YWSJ_JCXMTX A
               where  BMBH00 = paraYKSID0 and TJH000 = paraTJH000
               and instr(VTPBT00, ','||TPBT00||',') > 0
               and not exists(select 1 from VW_PE_JCXMTX where TJH000 = paraTOTJH0
                     and TPBT00 = A.TPBT00 and KSLX00 = VYXLX00);
     if sql%notfound then
       paraTSXX00 := '原科室无图片, 复制失败!';
       return;
     end if;
     commit;

    select YXLX00 into VYXLX00 from BM_BMBM00 where BMBH00 = paraYKSID0;
     open cur_ExamItemPicture for
       with VW_TX as
       (select TJH000, BMBH00, JCBW00, BDY000, KSLX00, CTRQ00, TPBT00, SFYWID, KSLX00 YXLX00
          from VW_PE_JCXMTX where TJH000 = paraTOTJH0 and BMBH00 = paraTOKSID)
       select TJH000, BMBH00, JCBW00, BDY000, KSLX00, CTRQ00, TPBT00, SFYWID, KSLX00 YXLX00 from VW_TX
       union all
       select paraTJH000 TJH000, paraYKSID0 BMBH00, JCBW00, BDY000, VYXLX00 KSLX00, CTRQ00, TPBT00, SFYWID, VYXLX00 YXLX00 from VW_TX;

     open cur_PictureServer for
        select BMBH00, FTPURL, FTPYHM, FTPMM0, (select YXLX00 from BM_BMBM00 where BMBH00 = A.BMBH00) YXLX00
        from SY_PE_YWZD_YXPZB0 A where BMBH00 in(paraTOKSID,paraYKSID0);
  end;

  --查询体检者影像科室信息
  procedure QueryPersonDeptInfo(paraTJH000 in number,
    paraCZY000 in number,
    cur_PersonDeptInfo out ref_cur)is
  begin
    open cur_PersonDeptInfo for
        select BMBH00, FTPURL, FTPYHM, FTPMM0, (select YXLX00 from BM_BMBM00 where BMBH00 = A.BMBH00) YXLX00
          from SY_PE_YWZD_YXPZB0 A where exists(select 1 from SY_PE_YWSJ_TJFKJC
               where BMBH00 = A.BMBH00 and TJH000 = paraTJH000)
          and BMBH00 in (select BMBH00 from XT_YHBMQX where YGBH00 = paraCZY000);
  end;

  --删除接口图片
  function DeleteInterfacePicture(paraTJH000 in number,
    paraBMBH00 in number,
    paraTPLJ00 in varchar2) return varchar2 is
  begin
    update SY_PE_YWSJ_SFXMJG set TPLJ00 = replace(TPLJ00, paraTPLJ00||';', '')
           where TJH000 = paraTJH000 and BMBH00 = paraBMBH00 and instr(TPLJ00, paraTPLJ00||';')>0;
    if sql%notfound then
      update SY_PE_YWSJ_SFXMJG set TPLJ00 = replace(TPLJ00, paraTPLJ00, '')
             where TJH000 = paraTJH000 and BMBH00 = paraBMBH00 and instr(TPLJ00, paraTPLJ00)>0;
    end if;
    commit;
    return 'succeed';
  end;

end PEIS_ReportPictureManage;

调用:
dao

void examItemPictureOperate(Map<String, Object> params);

mybastis的xml
PEIS_ReportPictureManage.examItemPictureOperate这是个function

<parameterMap id="examItemPictureOperate_paramMap" type="java.util.HashMap">
        <parameter property="result" mode="OUT" jdbcType="VARCHAR" javaType="java.lang.String"/>
        <parameter property="paraOPFLAG" mode="IN" jdbcType="VARCHAR" javaType="java.lang.String"/>
        <parameter property="paraTJH000" mode="IN" jdbcType="VARCHAR" javaType="java.lang.String"/>
        <parameter property="paraBMBH00" mode="IN" jdbcType="VARCHAR" javaType="java.lang.String"/>
        <parameter property="paraKSLX00" mode="IN" jdbcType="VARCHAR" javaType="java.lang.String"/>
        <parameter property="paraJCBW00" mode="IN" jdbcType="VARCHAR" javaType="java.lang.String"/>
        <parameter property="paraBDY000" mode="IN" jdbcType="VARCHAR" javaType="java.lang.String"/>
        <parameter property="paraTPBT00" mode="IN" jdbcType="VARCHAR" javaType="java.lang.String"/>
        <parameter property="paraCZY000" mode="IN" jdbcType="VARCHAR" javaType="java.lang.String"/>

    </parameterMap>
    <select id="examItemPictureOperate" parameterMap="examItemPictureOperate_paramMap" resultType="java.util.Map" statementType="CALLABLE">
		 <![CDATA[
             {?=call PEIS_ReportPictureManage.examItemPictureOperate(?,?,?,?,?,?,?,?)}
        ]]>
	</select>

类似地 这是个procedure

 <parameterMap id="getReportForFrx_paramMap" type="java.util.HashMap">
        <parameter property="paraTJH000" mode="IN" jdbcType="VARCHAR" javaType="java.lang.String"/>
        <parameter property="paraYYID00" mode="IN" jdbcType="VARCHAR" javaType="java.lang.String"/>
        <parameter property="curSQXM" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curTJZ000" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curTJZZYS" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curZYBS" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curJWBS" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curJWSJ" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curSYS_SFYY" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curHYS_SFYH" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curJZBS" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curWJZBS" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curJWHBS" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curJZQTBS" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curTJZYJS" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curFFSZYS" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curFSZYS" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curTJZSHS" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curTJZHYS" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curTJZSYS" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curJKCF" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curZZBG" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curFKJC00" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curZJBGD" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curYXH" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curYXMSZD" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curJYK000" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curJYKJCXM" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curJYFKJC" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curZJ0000" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curXTZZ" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curZXZJTJ" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curJZZJTJ" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curXTZJ" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curJBFL" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curZYSQXM" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curZYJC" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curZYZSJG" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curDCJG" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curJCXMBD" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curTPBG00" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
        <parameter property="curTWBGT0" mode="OUT" jdbcType="CURSOR" javaType="java.sql.ResultSet" resultMap="commonMap"/>
    </parameterMap>
    <select id="getReportForFrx" parameterMap="getReportForFrx_paramMap" resultType="java.util.Map" statementType="CALLABLE">
		<![CDATA[
              call PEIS_PUBLIC_PRINT.queryReportForFrx(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
        ]]>
	</select>

比较特殊的存储过程 table of类型的:
在package中定义的

type arrTTSFID is table of SY_PE_YWSJ_TTFZXM.TTSFID%type index by binary_integer;
procedure OperGroupingItem(paraFlag in number, --标志 0:新增  1 修改 2:删除 3清除 4  加入套餐
                                                         paraTTSFID in out arrTTSFID ,--分组项目ID
                                                         paraRWFZID in number ,--任务分组ID
                                                         paraTCID00 in number, --套餐ID
                                                         paraKL0000 in number, --扣率
                                                         paraSQXMID in number ,--申请项目ID
                                                         paraHospitalID in varchar2, --医院ID
                                                         paraRETURN out varchar2, --返回标志 success 成功  failure 失败
                                                         paraRTNMSG out varchar2 --返回信息
                                                        ) is
 vZXCGBZ number;
 vTSXX00 varchar2(400);
 vXXXX00 varchar2(400);
 idx     number;
 ECUSTOM  exception;
 begin
    paraRETURN:='failure';
    if   (paraFlag =0) or (paraFlag =1) or (paraFlag =2)  then
      for idx in 1..paraTTSFID.count loop
        SP_PE_YWSJ_TTFZXM_EDIT(POPFLAG=>paraFlag,PTTSFID=>paraTTSFID(idx),PRWFZID=>paraRWFZID,PTCID00=>paraTCID00,
                                                       PKL0000=>paraKL0000,PSQXMID=>paraSQXMID,PYYID00=>paraHospitalID,PCOMMIT=>'N',
                                                       PZXCGBZ=>vZXCGBZ,PTSXX00=>vTSXX00,PXXXX00=>vXXXX00);
          if vZXCGBZ=0 then
             paraRTNMSG:=vTSXX00;
             raise ECUSTOM;
          end if;
       end loop;
    elsif paraFlag=3 then
        delete from SY_PE_YWSJ_TTFZXM where RWFZID =paraRWFZID;
    elsif paraFlag=4 then
       SP_PE_JRTCCZ(PFLAG00=>1,PTCID00=>paraTCID00,PKL0000=>paraKL0000,PID0000=>paraRWFZID,PSFGXXE=>'0',PDJBDBZ=>'1',
                                  PCZY000=>9999,PCZYKS0=>20,PDDH000=>'',PCOMMIT=>'N',PZXCGBZ=>vZXCGBZ,
                                  PTSXX00=>vTSXX00,PXXXX00=>vXXXX00);
       if vZXCGBZ=0 then
          paraRTNMSG:=vTSXX00;
          raise ECUSTOM;
       end if;
    end if;
    if  sf_pe_getxtcs('PE_TSXESFSSGX','Y')<>'N' then
              update SY_PE_YWSJ_TTRWFZ A set TSXE00=(select sum(ZHJG00) from SY_PE_YWSJ_TTFZXM where RWFZID=A.Rwfzid)
              where A.RWFZID=paraRWFZID and FBBH00 in ('2','4');
     end if;
    commit;
    paraRETURN:='success';
    paraRTNMSG:='';
 exception
   when ECUSTOM then
     rollback;
   when others then
     rollback;
     paraRTNMSG:=substrb(nvl(sqlerrm, '原因不明出错')||'!*',1,240);
 end;

调用

package com.thinkgem.jeesite.modules.group.dao;

import com.thinkgem.jeesite.common.utils.SpringContextHolder;
import oracle.jdbc.OracleCallableStatement;
import oracle.jdbc.OracleConnection;
import oracle.jdbc.OracleTypes;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import org.springframework.stereotype.Repository;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.Map;

/**
 * 调用存储过程 参数类型 包含table of ...类型的
 */
@Repository("OperGroupingItemDao")
public class OperGroupingItemDao extends JdbcDaoSupport {
    @Autowired
    public OperGroupingItemDao() {
        javax.sql.DataSource dataSource = SpringContextHolder.getBean("dataSourceXmsq");
        setDataSource(dataSource);
    }

    public void operGroupingItem(Map<String, Object> params) throws SQLException{
        Connection conn=super.getConnection();
        OracleCallableStatement cs = null;
        try {
            oracle.jdbc.OracleConnection con = null;
            if (conn.isWrapperFor(OracleConnection.class)) {
                con = conn.unwrap(OracleConnection.class);
            }

            int[] arrTTSFID=(int[]) params.get("paraTTSFID");
            cs = (OracleCallableStatement) con.prepareCall("begin PEIS_AssignmentReserve.OperGroupingItem(?,?,?,?,?,?,?,?,?); end;");
            System.out.println((String) params.get("paraOPFLAG"));
            cs.setString(1, (String) params.get("paraOPFLAG"));
            if (null != arrTTSFID && arrTTSFID.length > 0) {
                cs.setPlsqlIndexTable(2, arrTTSFID, arrTTSFID.length, arrTTSFID.length, OracleTypes.NUMBER, 0);

            }
            cs.setString(3, (String) params.get("paraRWFZID"));
            cs.setString(4, params.get("paraTCID00")==null?"":(String) params.get("paraTCID00"));
            cs.setString(5, params.get("paraKL0000")==null?"0":(String) params.get("paraKL0000"));
            cs.setString(6, params.get("paraSQXMID")==null?"":(String) params.get("paraSQXMID"));
            cs.setString(7, (String) params.get("paraYYID00"));

            cs.registerOutParameter(8, OracleTypes.VARCHAR);
            cs.registerOutParameter(9, OracleTypes.VARCHAR);
            cs.registerIndexTableOutParameter (2,arrTTSFID.length,OracleTypes.NUMBER,0);
            cs.execute();
            params.put("returnTTSFID",cs.getPlsqlIndexTable(2));
        }finally{
            if(null != conn){
                conn.close();
            }
            if(null != cs){
            	cs.close();
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值