函数是
  function getAppHoldNum(batchid   number,
                         brandid   number,
                         simfun    number,
                         cityid    varchar2,
                         queryDate varchar2) return AppHoldNum is
    --------------------------------------------------------
     2011-12-01
    ------------------------------------------------------
    l_AppHoldNum AppHoldNum;
    l_sql        varchar2(3500);
    l_select_sql varchar2(1500);
    l_and_sql    varchar2(500);
    l_group_sql  varchar2(500);
  
  begin
    if (queryDate is null) or (Length(queryDate) = 0) then
      return l_AppHoldNum;
    
    end if;
    if (batchid = 0) or (brandid = 0) or (simfun = 0) then
     return l_AppHoldNum;
    
    end if;
    l_select_sql := 'select v_menuname, sum(i_number),substr(v_statdate, 1, 6) as sdate
                from t_statappholdingnum t
                where t.i_batchid = ' || batchid || '
                and t.n_brandid = ' || brandid || '
                and t.i_simfunction = ' || simfun || '
               and substr(v_statdate, 1, 6) in (' ||
                    queryDate || ')';
  
    if (cityId <> '-1') then
      l_and_sql := ' and t.v_cityid=' || cityId;
      l_sql     := l_sql || l_and_sql;
    end if;
  
    l_sql := l_sql || l_select_sql;
  
    l_group_sql := ' group by v_menuname,substr(v_statdate, 1, 6) order by v_menuname';
  
    l_sql := l_sql || l_group_sql;
    open l_AppHoldNum for l_sql;
  
    return l_AppHoldNum;
  exception
    when others then
     return l_AppHoldNum;
  end;
其中表里有数据如图
我访问用的例子是:
select  pk_stat.getAppHoldNum(
11,
2,
7,
451,
'200801,200802,201103,200804,200805,200806,200807,200808,200809,200810,200811,200812')  
from dual 
执行结果是:ORA-00604: error occurred at recursive SQL level 1
ORA-01003: no statement parsed
不知道是哪个原因,帮忙看一下。!