CREATE FUNCTION TestFun (UserID varchar,DeptCode varchar )  
RETURN number
IS  
rec number;
result number;
BEGIN 
   result:= 1;
   While DeptCode is not null loop
      begin
select count(*) into rec from cdm_datarightuser where us_id = UserID and dp_code = DeptCode;
If (rec > 0) then
               begin
                 result := 0;
                 exit;
    end;
         end if;
    DeptCode := substr(DeptCode,1,length(DeptCode) - 2);
end;
     end loop;
  RETURN (result)
END

解决方案 »

  1.   

    非常感谢waterfirer(水清)!!
    转换后的函数在PL/SQL中执行没有问题,但是在企业管理器中的状态为“INvalid”,使用“编译” 显示:“INvalid (Ln,Col):(1:1)”,还希望再帮我看看!!!谢谢!
      

  2.   

    后面少了两个;;
      RETURN (result);
    END;
      

  3.   

    还是在企业管理器中的状态为“INvalid”,使用“编译” 显示:“INvalid (Ln,Col):(1,1)”检查不出来是那里错了啊,快来帮忙把,高手们!!!!
    跪谢了!!!!!!
      

  4.   

    create or replace function (userid in varchar2,deptcode in out varchar2)
    return number
    as
    rec number;
    result number :=1;
    begin
    while deptcode is not null loop
    select count(*) into rec from cdm_datarightuser where us_id=userid and dp_code=deptcode;
    if(rec > 0) then
    result :=0;
    exit;
    end if;
    deptcode:=substr(deptcode,1,length(deptcode) -2);
    end loop;
    return (result);
    end;
      

  5.   

    (userid in varchar2,deptcode in out varchar2)
    请问问什么要加上“out”呢?
    我要给这个函数传入两个参数啊!!!请赐教!
      

  6.   

    (userid in varchar2,deptcode in out varchar2)
    请问问什么要加上“out”呢?
    我要给这个函数传入两个参数啊!!!请赐教!in 表示输入参数
    out 表示输出参数,可以取得返回值,
      

  7.   

    加上out后说明这个参数是输入/输出型参数,也就是可以返回值的参数,有点类似于按地址传得参数。
      

  8.   

    create or replace function TestFun (userid in varchar2,deptcode in varchar2)
    return number
    as
    rec number:=0;
    v_deptcode varchar2(40):=deptcode;
    begin
      while v_deptcode is not null loop
        select count(*) into rec from cdm_datarightuser where us_id=userid and dp_code=v_deptcode;
        exit when (rec > 0);
        v_deptcode:=substr(v_deptcode,1,length(v_deptcode) -2);
      end loop;
      return (1-(sign(rec)));
    end;
    /
      

  9.   

    感谢bobfang(匆匆过客)大哥,这样写成功了,再次谢谢!!!!注:bobfang(匆匆过客)大哥 注意接分!