-- DROP FUNCTION schema_xyz.get_adr_id_b_pg(varchar, varchar);

CREATE OR REPLACE FUNCTION schema_xyz.get_adr_id_b_pg(address_full_in character varying, city_in character varying)
 RETURNS bigint
 LANGUAGE plpgsql
AS $function$

DECLARE
/*
Returns an adr_id value for an address based on the result_II table (which must contain address_full, city and adr_id).
*/
DECLARE

ergebnis bigint;

BEGIN
   

select /*+ parallel(auto) */ distinct(adr_id) into ergebnis
from schema_xyz.result_II a
join schema_xyz.result_I b
on a.address_full=b.address_full and coalesce(a.city,'0')=coalesce(b.city,'0')
where b.address_full_original=address_full_in and coalesce(b.city_original,'0')=coalesce(city_in,'0');

return ergebnis;

   
END;
$function$
;