有一个视图SF  我想将字段A='01'时候je=je*2(je得二倍) ,当A=别的值的时候,je不变.就了下面一段存储过程,可以编译通过后,返回值没有变化....大家帮我看看该如何修改reate or replace function SF(A In Varchar2,JE In Varchar2) 
Return Varchar2
Is
  ZA Varchar2(40);
  ZJE Varchar2(40);
  Result Varchar2(40);
begin
  ZA := LTRIM(RTRIM(A));
  ZJE := LTRIM(RTRIM(JE));
  If ZHPZL= '01'
     Then ZJE := JE*2;
          Result := ZJE;
  End If;
  return(Result);
end SF;

解决方案 »

  1.   

    改正一个错误.在第10行,应该是If ZA= '01'
      

  2.   

    把函数重新帖一下,,,前面那个有个ZHPZL字段有问题应该改成ZAreate or replace function SF(A In Varchar2,JE In Varchar2) 
    Return Varchar2
    Is
      ZA Varchar2(40);
      ZJE Varchar2(40);
      Result Varchar2(40);
    begin
      ZA := LTRIM(RTRIM(A));
      ZJE := LTRIM(RTRIM(JE));
      If ZA= '01'
         Then ZJE := JE*2;
              Result := ZJE;
      End If;
      return(Result);
    end SF;
      

  3.   

    错误在当 ZA= '01'不成立时result没有给赋值
    create or replace function SF(A In Varchar2,JE In Varchar2) 
    Return Varchar2
    Is
    begin
      If trim(a)= '01'  Then
       return(trim(JE)*2);
      else 
       return(trim(JE));
      End If;
    end SF;
      

  4.   

    楼上应该已经找到原因了,
    还有if ... then应该放在同一行~~(像楼上那样)看楼主的程序不太习惯
      

  5.   

    create or replace function SF(A In Varchar2,JE In Varchar2) 
    Return Varchar2
    Is
    begin
      If trim(a)= '01'  Then
       return(to_char(to_number(trim(JE))*2));
      else 
       return(trim(JE));
      End If;
    end SF;