create or replace function SF_SF_HQYBXJ ( PYBLB00 varchar, PYBZXLB varchar, PFBBH00 number, Psfxmid number, Psfyp00 varchar, PBRID00 number default 0 ) return varchar2 is VSFSX00 varchar2(30); Vmrzfbl number(3,2); Vfbbh00 number(5); Vybzxlb IC_YBBRLB.YBZXLB%type; VYBXMBH BM_YBSFDY.YBXMBH%type; LS_YYID00 XT_YYXX00.YYID00%TYPE; -- MODIFICATION HISTORY -- Person Date Comments -- qks 2017.04.28 create; for MZSF9-20170428-001 begin Vybzxlb:=PYBZXLB; VSFSX00:=null; SELECT YYID00 INTO LS_YYID00 FROM XT_YYXX00; if PFBBH00 <> 1 and PFBBH00 <> 99 and Psfyp00='Y' then if Vybzxlb is null then select YBZXLB into Vybzxlb from IC_YBBRLB where YBLB00=PYBLB00 and FBBH00=PFBBH00; end if; select max(YBXMBH) into VYBXMBH from VW_BM_YBSFDY where YBZXLB=Vybzxlb and FBBH00=PFBBH00 and SFXMID=Psfxmid and SFYP00=Psfyp00; if VYBXMBH is not null then IF LS_YYID00='229112' THEN select to_char(round((A.YBZGDJ * B.M2J000 / B.K2J000), 2),'9999990.00') INTO VSFSX00 from BM_YBSFDY A,BM_YD0000 B where A.SFXMID=B.YPNM00 AND SFXMID = Psfxmid and A.YBZXLB = '1'; ELSE select trim(to_char(max(SFSX00),'9999990.00')) into VSFSX00 from BM_YBSFXM where YBZXLB=Vybzxlb and FBBH00=PFBBH00 and XMBH00=VYBXMBH; END IF; end if; return VSFSX00; else return ''; end if; end;