CREATE OR REPLACE FUNCTION temp_fajta_lista_feltoltes(p_kod bigint, p_szint bigint, p_alkalom bigint)
  RETURNS integer AS
'declare

v_kod bigint;
v_lanc_kapcsolt_kod bigint;
v_fajta_kod bigint;
v_lang_0000040e character varying;
v_cntr bigint;
v_szint bigint;

cr_f1 refcursor;

begin

  if p_kod = 0 then
     v_szint := 1;
  else  
     v_szint := p_szint;
  end if;
  v_cntr := 0;
  
  open cr_f1 FOR SELECT kod, lanc_kapcsolt_kod, fajta_kod, lang_0000040e
                   FROM tetel_fajtak f1
                  WHERE lanc_kapcsolt_kod = p_kod and kod <> 0 and ures = 0
                  order by fajta_kod, lang_0000040e;

    fetch cr_f1
     into v_kod,
          v_lanc_kapcsolt_kod,
          v_fajta_kod,
          v_lang_0000040e;

    while found loop

      INSERT INTO _temp_tetel_fajtak (tetel_fajta_kod,lanc_kapcsolt_kod,fajta_kod,lang_0000040e, szint, alkalom) VALUES (v_kod,v_lanc_kapcsolt_kod,v_fajta_kod,v_lang_0000040e,v_szint, p_alkalom);
      v_cntr := v_cntr + 1;
      
      v_cntr := v_cntr + temp_fajta_lista_feltoltes(v_kod, v_szint+1, p_alkalom);

      fetch cr_f1
        into v_kod,
             v_lanc_kapcsolt_kod,
             v_fajta_kod,
             v_lang_0000040e;
    end loop;

    close cr_f1;

    return (v_cntr);

end;'
  LANGUAGE plpgsql VOLATILE
  COST 100;
