//下面这个函数为什么不对
create or replace function getPathByPid(p_orgParentId number) return varchar2 
is
  orgPath bua_organization.org_path%TYPE := null;
begin
  orgPath := decode(sign(1 - 0),0, '0', 1, '1');    //主要是错在这行
  return orgPath;
     
end getPathByPid;//下面这个又为什么不对
create or replace function getPathByPid1(p_orgParentId number) return varchar2 
is
  orgPath varchar2 := 'aa';
begin
  return orgPath;
     
end getPathByPid1;

解决方案 »

  1.   

    用“a”巴。第一有问题吧!return varchar2 而定义处orgPath bua_organization.org_path%TYPE := null;
    类型不一定相符。
      

  2.   

    orgPath varchar2 := 'aa'; 中的类型必须制定相应长度,即应该为:orgPath varchar2(12) := 'aa';
      

  3.   

    create or replace function getPathByPid(p_orgParentId number) return varchar2 
    is
      --orgPath bua_organization.org_path%TYPE := null;
      orgPath bua_organization.org_path%TYPE; -- 默认为null,不用再多此一举. :)
    begin
      --orgPath := decode(sign(1 - 0),0, '0', 1, '1');    //主要是错在这行
      --decode不可单独使用. :)
      select decode(sign(1 - 0),0, '0', 1, '1') into orgPath
        from dual;
      return orgPath;
         
    end getPathByPid;
      

  4.   

    create or replace function getPathByPid1(p_orgParentId number) return varchar2 
    is
      --orgPath varchar2 := 'aa';
      orgPath varchar2(10):= 'aa'; -- 不要忘了变量的长度. :^_^:
    begin
      return orgPath;
    end getPathByPid1;
      

  5.   

    主  题:  有关Oracle的函数,高手金。  
    作  者:  maidongdong ()  
    等  级:    
    信 誉 值:  100  
    所属社区:  Oracle 开发  
    问题点数:  20  
    回复次数:  5  
    发表时间:  2006-8-16 18:35:44  btw:  高手金是什么意思????
      

  6.   

    非常感谢“牧师”的答复,你这种细节的帮助胜于我翻阅oracle整本宝典。
    我的“高手金”纯粹是为了吸引高手近来,别无他意,更不是写错了。