create or replace function fn_assetode(i_type_code in varchar2, i_src_COLM IN varchar2, i_date in varchar2, i_src_cd in varchar2) return varchar2 as /*定义变量*/ o_tar_code varchar2(40); begin if i_type_code=‘1‘ then select fi_id into o_tar_code from t1 where (case when i_scr_cd in (‘NFC‘) THEN NFC_ASSET_ID WHEN i_scr_cd IN (‘GLD‘) THEN GLD_ASSET_ID)=i_src_COLM ELSIF (i_type_code=‘2‘ OR i_type_code=‘3‘) THEN SELECT t2.fi_id into o_tar_code from (select distinct new_windcode ,asharecode , row_number() over(partition by new_windcode order by times desc) rn from win_asset_id_mapping)t1 inner join t2 on t1.asharecode=t2.asharecode where t1.asharecode is not null and t1.rn=1 and t1.new_windcode=i_src_COLM elsif i_type_code=‘4‘ then select fi_id into o_tar_code from t1 where to_date(i_date,‘YYYYMMDDHH24MISS‘)>=txdate
else o_tar_code=‘‘; end if; return o_tar_code; end fn_assetode;