-- Start of DDL Script for Procedure SD_HOSPITAL.SP_YJ_YYFKXX -- Generated 22-四月-2016 12:31:15 from SD_HOSPITAL@FJLNYY CREATE OR REPLACE PROCEDURE sp_yj_yyfkxx(PYYID00 in number, --预约ID 可空 PYJDJH0 in char, --医技单据号 不能空 PBZ0000 in char, --注意事项 PYYRQ00 in char default '', --预约日期格式YYYYMMDD PYYSJ00 in char default '', --预约时间 格式 09:00 PYYXH00 in char default '0', --预约序号 PCZRXM0 in char, --操作人姓名 PCZBZ00 in char, --0:预约确认(PACS) 1:HIS读取确认 PJCSQDH in char, --PACS检查申请单号 PRESULT out number , --错误代码 0成功 1错误 PERROR0 out char, --错误描述 PTZBH00 in char, --同时登记编号 PYYSD00 in char , --同时登记编号 PYYZT00 IN CHAR --预约返回状态 ) as LS_RQ0000 date; LS_ERROR0 varchar2(50); LS_COU number(10); Ecustom exception ;--错误变量 YJROW YJ_YW0000%rowtype; ls_YJKSMC BM_BMBM00.BMMC00%type; ls_KDKSMC BM_BMBM00.BMMC00%type; ls_YYID00 YJ_YYBRB0.YYID00%type; LS_YJDJH0 varchar2(50); LS_YJDJH1 YJ_YYBRB0.YJDJH0%type; LS_POS000 number(5); LS_CZYXM0 BM_YGBM00.ZWXM00%type; LS_YGBH00 BM_YGBM00.YGBH00%type; -- MODIFICATION HISTORY -- Person Date Comments -- dsm 2013.08.14 create for YJ-20130711-002 begin PRESULT:=0; PERROR0:=''; select YGBH00,ZWXM00 into LS_YGBH00,LS_CZYXM0 from BM_YGBM00 where ZWXM00=PCZRXM0 and CZBZ00<>'2' and rownum=1; if PCZBZ00='0' then begin LS_RQ0000:=to_date(PYYRQ00,'YYYYMMDD'); exception when others then LS_ERROR0:='预约日期格式错误!'; raise Ecustom; end; if length(trim(PYJDJH0))=0 then LS_ERROR0:='请提供HIS单据号!'; raise Ecustom; end if; LS_YJDJH0:=PYJDJH0; LS_YJDJH1:=0; LS_POS000:=instr(LS_YJDJH0,','); if LS_POS000=0 then begin LS_YJDJH1:=to_number(LS_YJDJH0); exception when others then LS_ERROR0:='医技单据号不对!LS_YJDJH0='||LS_YJDJH0||' '||SQLERRM; raise Ecustom; end; LS_YJDJH0:=''; else begin LS_YJDJH1:=to_number(substr(LS_YJDJH0,1,LS_POS000-1)); exception when others then LS_ERROR0:='医技单据号不对!LS_YJDJH1='||LS_YJDJH1||'LS_POS000='||LS_POS000||SQLERRM; raise Ecustom; end; LS_YJDJH0:=substr(LS_YJDJH0,LS_POS000+1,length(LS_YJDJH0)-LS_POS000); end if; while LS_YJDJH1>0 loop select count(*) into ls_COU from YJ_YYBRB0 where (YJDJH0=LS_YJDJH1 and LS_YJDJH1>0); if ls_COU=0 then select * into YJROW from YJ_YW0000 where YJDJH0=LS_YJDJH1; select SQ_YJ_YYBRB0_YYID00.nextval into LS_YYID00 from dual; select BMMC00 into ls_YJKSMC from BM_BMBM00 where BMBH00=YJROW.YJKSBH; select BMMC00 into ls_KDKSMC from BM_BMBM00 where BMBH00=YJROW.KDKSBH; insert into YJ_YYBRB0(YYID00 ,PBHBID ,MZZYBZ ,ZYGHID ,YJDJH0 ,YYH000 ,BRID00 ,BRXM00 ,BRDH00 ,KMH000 ,ICKH00 ,YJKSBH ,YJKSMC ,YYLB00 ,YYRQ00 ,YYSJ00 ,YYZT00 ,YYYGBH ,YYYGXM ,SQKSBH ,SQKSMC ,DJRQ00 ,DJSJ00 ,BZ0000 ,JKYYH0,JCSQDH,YYSD00) values(LS_YYID00,0,YJROW.MZZYBZ ,YJROW.ZYGHID ,nvl(LS_YJDJH1,0),0 ,YJROW.BRID00 ,YJROW.BRXM00 ,'','' ,'' ,YJROW.YJKSBH ,ls_YJKSMC ,'0' ,PYYRQ00 ,PYYSJ00 ,PYYZT00 ,LS_YGBH00 ,PCZRXM0 ,YJROW.KDKSBH ,ls_KDKSMC ,to_char(sysdate,'YYYYMMDD') ,to_char(sysdate,'HH24:MI:SS') ,'' ,PYYXH00,substr(PJCSQDH,1,20),PYYSD00); Insert into YJ_JCYYFK(YYID00,YJDJH0) values (LS_YYID00,LS_YJDJH1); update YJ_JCYYFK set YYAPRQ=PYYRQ00, YYAPSJ=PYYSJ00, BZ0000=PBZ0000, PACSZT='1', PSCZR0=PCZRXM0, PSCZRQ=to_char(sysdate,'YYYYMMDD'), PSCZSJ=to_char(sysdate,'HH24:MI:SS'), JCSQDH=substr(PJCSQDH,1,20), TZBH00=PTZBH00, YYSD00=PYYSD00 where (YJDJH0=LS_YJDJH1 and LS_YJDJH1>0); update YJ_YW0000 set YYID00= LS_YYID00 where YJDJH0=LS_YJDJH1; else update YJ_YYBRB0 set YYRQ00= PYYRQ00, YYSJ00=PYYSJ00, JKYYH0=PYYXH00, YYSD00=PYYSD00 where (YJDJH0=LS_YJDJH1 and LS_YJDJH1>0); end if; LS_POS000:=instr(LS_YJDJH0,','); LS_YJDJH1:=0; if LS_POS000=0 and nvl(LS_YJDJH0,' ')<>' ' then begin LS_YJDJH1:=to_number(LS_YJDJH0); LS_YJDJH0:=''; exception when others then LS_ERROR0:='医技单据号不对!LS_YJDJH0='||LS_YJDJH0||' '||SQLERRM; raise Ecustom; end; elsif nvl(LS_YJDJH0,' ')<>' ' then begin LS_YJDJH1:=to_number(substr(LS_YJDJH0,1,LS_POS000-1)); exception when others then LS_ERROR0:='医技单据号不对!LS_YJDJH1='||LS_YJDJH1||'LS_POS000='||LS_POS000||SQLERRM; raise Ecustom; end; LS_YJDJH0:=substr(LS_YJDJH0,LS_POS000+1,length(LS_YJDJH0)-LS_POS000); end if; end loop; else update YJ_JCYYFK set HISZT0='1', HISQRR=PCZRXM0, HSCZRQ=to_char(sysdate,'YYYYMMDD'), HSCZSJ=to_char(sysdate,'HH24:MI:SS') where (YYID00=PYYID00 and PYYID00>0) ; end if; exception when Ecustom then PRESULT:=1; PERROR0:=LS_ERROR0||SQLERRM; RAISE_APPLICATION_ERROR(-20020, NVL(SQLERRM, '原因不明出错!*')); rollback; when others then PRESULT:=1; PERROR0:=SQLERRM; RAISE_APPLICATION_ERROR(-20020, NVL(SQLERRM, '原因不明出错!*')); rollback; end; / -- End of DDL Script for Procedure SD_HOSPITAL.SP_YJ_YYFKXX