--
-- get_func_definition/2
--
create or replace function get_func_definition(
fname character varying,
args oidvector
) returns text as $$
DECLARE
v_funcdef text default '';
v_args varchar;
v_nargs integer;
v_src text;
v_rettype varchar;
BEGIN
select pg_get_function_arguments(oid), pronargs, prosrc, -- was number_src(prosrc)
(select typname from pg_type where oid = p.prorettype::integer)
into v_args, v_nargs, v_src, v_rettype
from pg_proc p
where proname = fname::name
and proargtypes = args;
v_funcdef :=
E'--\n-- ' || fname || '/' || v_nargs || E'\n--'
|| E'\ncreate or replace function ' || fname || E'(\n '
|| replace(v_args, ', ', E',\n ')
|| E'\n) returns ' || v_rettype
|| E' as $$\n' || v_src || '$$ language plpgsql;';
return v_funcdef;
END;
$$ language plpgsql;