本帖最后由 simonezhlx 于 2009-06-26 16:23:34 编辑

解决方案 »

  1.   

    要用连接:
    for example:select col1,col2,testp1p2 from  t1 full outer join
    (select test(p1,p2) testp1p2 from t1 )t2
      

  2.   

    能否贴一下,这个函数是做什么的,参数类型有没有什么特殊的会不会是以前我也贴过的一个bug
    http://topic.csdn.net/u/20080305/14/9b30ab0a-3da2-477b-918e-e6473520d8f9.html
      

  3.   

    是很像,ORACLE 的BUG,没辙了?
      

  4.   

    多半是你的function没有做异常处理,比如两个输入参数是否为空这些异常;
    还有就是你的function 里面可能有事务性的操作
      

  5.   

    1.目前看是函数就只被前100行记录调用了,后面就不在执行了,但是使用后面的参数单独执行是有数据的.
    2.无事务性操作.函数体如下:
    CREATE OR REPLACE FUNCTION "PROJECTPLANACTORS"
        (sProjectID in varchar2,sActionID in varchar2)
    return varchar2 as
      sReturnValue varchar2(32000);
      sTemp varchar2(20);
      cursor cu1(p1 varchar2,p2 varchar2) 
      is select b.USERCNAME from pdwfd17 a inner join asreg005 b on a.Actor = b.userid
      where a.procaseid=p1 and a.actionid=p2;
    begin
         open cu1(sProjectID,sActionID);
         sReturnValue:='';
         loop
           fetch cu1 into sTemp;
           exit when cu1%notfound;
           if length(sReturnValue) > 0 then 
              sReturnValue:= sReturnValue || ',';
           end if;
           sReturnValue:=sReturnValue || sTemp;
         end loop;
      close cu1;
      return(sReturnValue);
    end ProjectPlanActors;
      

  6.   

    varchar2最大4000
    sReturnValue:='';是多余的
    最后把cursor的参数写死试试,不要动态传入参数如果还是不行,可以去找一下如何用一句sql得到你要的结果(有很多人问,很多人回答)
    这样问题就没有了
      

  7.   


                        IN (
                                SELECT *
                                 FROM TABLE (
                                 CAST (HWE00080SP.FN_SPLIT (IN_TP_HWE00080_KSKIN_ARR(i).KMKCD1, ';') AS TP_HWE00080_STR_ARR
                                 )
                         ));
      

  8.   

    算了,就当做是9I的BUG吧,找时间再问高手,先结了吧