I believe you really mean

my_proc('x','y','a,b,c')

if that was the case I did something similar

Code:
create or replace package body ins_media
as
  procedure media_semana(p_ori_owner varchar2,
                         p_ori_tab varchar2,
                         p_avg_col varchar2,
                         p_predicate varchar2,
                         p_group_col varchar2,
                         p_des_owner varchar2,
                         p_des_tab varchar2)
  is
    l_sql_str varchar2(2000);
  begin
    l_sql_str := 'insert into ' || p_des_owner || '.' || p_des_tab
                 || ' select ' || p_group_col
                 || ', avg(' || replace(p_avg_col,',','),avg(') 
                 || ') from ' || p_ori_owner
                 || '.' || p_ori_tab || ' where ' || p_predicate
                 || ' between trunc(sysdate) - 7500 and trunc(sysdate) group by '
                 || p_group_col;
    execute immediate l_sql_str;
    dbms_output.put_line(sql%rowcount);
    dbms_output.put_line(l_sql_str);
  end media_semana;

example executing

EXEC INS_MEDIA.MEDIA_MES('LSC', 'EMP', 'COMM, SAL', 'HIREDATE', 'DEPTNO', 'LSC', 'EMP_TEST')
the key part is replace(p_avg_col,',','),avg(')

I have not pasted the whole code