oracle+function

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;
posted @ 2020-07-31 13:53  rjm123456  阅读(132)  评论(0编辑  收藏  举报