Ciao a tutti,
per motivi di lavoro sto continuando il progetto di un mio ex-collega, il problema è che questo progetto utilizza Postgresql e io non ho conoscenze in merito.

In particolare dovrei modificare una funzione che ha scritto lui ma i miei tentativi non stanno portando a nessuna conclusione, mi potete aiutare?

Questo è il codice scritto dal mio ex-collega
codice:
-- Function: menu.get_nav_menu(integer)

-- DROP FUNCTION menu.get_nav_menu(integer);

CREATE OR REPLACE FUNCTION menu.get_nav_menu(menu_id integer)
  RETURNS SETOF menu.v_vocimenu AS
$BODY$


DECLARE
       id_padre integer;
	   
       qry text;
	   
       r menu.v_vociMenu%rowtype;

BEGIN

     FOR r in select * from menu.v_vociMenu
	 
     where id_menu = $1 
	 
     LOOP
	 
     RETURN QUERY SELECT * FROM menu.get_nav_menu(r.padre);
	 
         IF r.padre = 0 THEN
		 
            RETURN NEXT r;
			
            EXIT;
			
         END IF;
		 
          RETURN NEXT r;
		  
     END LOOP;
	 
     RETURN;

END;

$BODY$
  LANGUAGE 'plpgsql' VOLATILE
  COST 100
  ROWS 1000;
ALTER FUNCTION menu.get_nav_menu(integer) OWNER TO postgres;
Mi sono accorto che l'errore si genera perchè fa il controllo in un unico campo nella where quindi la query è sbagliata, ho provato a modificarlo in questo modo
codice:
-- Function: menu.get_nav_menu(integer, integer)

-- DROP FUNCTION menu.get_nav_menu(integer, integer);

CREATE OR REPLACE FUNCTION menu.get_nav_menu(id_utente integer, menu_id integer)
  RETURNS SETOF menu.v_vocimenu AS
$BODY$



DECLARE
       id_padre integer;
	   
       qry text;
	   
       r menu.v_vociMenu%rowtype;

BEGIN

     FOR r in select * from menu.v_vociMenu
	 
     where id_utente = $1 and id_menu = $2 
	 
     LOOP
	 
     RETURN QUERY SELECT * FROM menu.get_nav_menu(r.padre);
	 
         IF r.padre = 0 THEN
		 
            RETURN NEXT r;
			
            EXIT;
			
         END IF;
		 
          RETURN NEXT r;
		  
     END LOOP;
	 
     RETURN;

END;

$BODY$
  LANGUAGE 'plpgsql' VOLATILE
  COST 100
  ROWS 1000;
ALTER FUNCTION menu.get_nav_menu(integer, integer) OWNER TO postgres;
ora però mi restituisce questo errore
codice:
ERROR: sql error DETAIL: ERROR: la funzione menu.get_nav_menu(integer) non esiste LINE 1: SELECT * FROM menu.get_nav_menu( $1 ) ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. QUERY: SELECT * FROM menu.get_nav_menu( $1 ) CONTEXT: PL/pgSQL function "get_nav_menu" line 32 at RETURN QUERY CONTEXT: funzione SQL "f_get_nav_menu" istruzione 1
sono 2 giorni che ci sbatto la testa mi potete aiutare?

ciao e grazie