-- -- define_function_args/2 -- create or replace function define_function_args( character varying, character varying ) returns int4 as $$ declare p_function alias for $1; p_arg_list alias for $2; v_arg_seq integer default 1; v_arg_name varchar; v_arg_default varchar; v_elem varchar; v_pos integer; begin delete from acs_function_args where function = upper(trim(p_function)); v_elem = split(p_arg_list, ',', v_arg_seq); while v_elem is not null loop v_pos = instr(v_elem, ';', 1, 1); if v_pos > 0 then v_arg_name := substr(v_elem, 1, v_pos-1); v_arg_default := substr(v_elem, v_pos+1, length(v_elem) - v_pos); else v_arg_name := v_elem; v_arg_default := NULL; end if; insert into acs_function_args (function, arg_seq, arg_name, arg_default) values (upper(trim(p_function)), v_arg_seq, upper(trim(v_arg_name)), v_arg_default); v_arg_seq := v_arg_seq + 1; v_elem = split(p_arg_list, ',', v_arg_seq); end loop; return 1; end;$$ language plpgsql;