create or replace FuncTion ft_getgrpaddr( as_coopid char , as_memgrp char , ai_option number ) return varchar2 is li_option number(2,0); ls_grpaddr varchar2(500); begin li_option := ai_option; if as_coopid is null then return 'NotFoundCoopid'; end if; if as_memgrp is null then return 'NotFoundMemgrp'; 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_road || addr_tambol || district_desc || province_desc || addr_postcode ) as grp_addr into ls_grpaddr 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_road , null , '' , '¶.' || trim( m.addr_road ) || ' ' ) as addr_road , decode( m.addr_tambol , null , '' , decode( m.addr_province , '10' , 'á¢Ç§ ' , 'µ.' ) || trim( m.addr_tambol ) || ' ' ) as addr_tambol , decode( mud.district_desc , null , '' , decode( m.addr_province , '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 mbucfmembgroup m , mbucfdistrict mud , mbucfprovince mup where m.addr_amphur = mud.district_code(+) and m.addr_province = mud.province_code(+) and m.addr_province = mup.province_code (+) and m.coop_id = as_coopid and m.membgroup_code = as_memgrp ); Else Return 'NotFoundOption'; End Case; return ls_grpaddr; end ; /