-- -- 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;