create or replace FuncTion ft_getmbaddr( as_coopid char , as_memno char , ai_option number ) return varchar2 is li_option number(2,0); ls_memaddr varchar2(500); begin li_option := ai_option; if as_coopid is null then return 'NotFoundCoopid'; end if; if as_memno is null then return 'NotFoundMember'; end if; if li_option is null then li_option := 1; end if; Case li_option When 1 Then /*Short addr*/ select trim( addr_no || addr_moo || addr_soi || addr_village || addr_road || tambol_desc || district_desc || province_desc || addr_postcode ) as mem_addr into ls_memaddr from( select decode( m.addr_no , null , '' , trim( m.addr_no ) || ' ' ) as addr_no , decode( m.addr_moo , null , '' , 'Á.' || trim( m.addr_moo ) || ' ' ) as addr_moo , decode( m.addr_soi , null , '' , '«.' || trim( m.addr_soi ) || ' ' ) as addr_soi , decode( m.addr_village , null , '' , trim( m.addr_village ) || ' ' ) as addr_village , decode( m.addr_road , null , '' , '¶.' || trim( m.addr_road ) || ' ' ) as addr_road , decode( mut.tambol_desc , null , '' , decode( m.province_code , '10' , 'á¢Ç§ ' , 'µ.' ) || trim( mut.tambol_desc ) || ' ' ) as tambol_desc , decode( mud.district_desc , null , '' , decode( m.province_code , '10' , 'ࢵ ' , 'Í.' ) || trim( mud.district_desc ) || ' ' ) as district_desc , decode( mup.province_desc , null , '' , '¨.' || trim( mup.province_desc ) || ' ' ) as province_desc , decode( m.addr_postcode , null , '' , trim( m.addr_postcode ) || ' ' ) as addr_postcode from mbmembmaster m , mbucftambol mut , mbucfdistrict mud , mbucfprovince mup where m.tambol_code = mut.tambol_code(+) and m.amphur_code = mut.district_code(+) and m.amphur_code = mud.district_code(+) and m.province_code = mud.province_code(+) and m.province_code = mup.province_code(+) and m.coop_id = as_coopid and m.member_no = as_memno ); Else Return 'NotFoundOption'; End Case; return ls_memaddr; end ; /