谁能帮忙把下面段SYBASE的SQL翻译成ORACLE,我参看下,感激不尽~
Create Procedure ZfWspz    
                           
@ID Integer, 
@TaxerCode Integer 
AS                  
  declare @PayerType varchar(1) 
  declare @pcCode Integer 
  declare @Name varchar(20) 
  declare @IDCardCode varchar(20) 
  declare @Pzhm Integer 
  
  select @Pzhm=(select Pzhm from PayedTaxCredenceBook where ID=@ID) 
  select @PayerType=(select PayerType from PayedTaxCredenceBook where ID=@ID ) 
  select @pcCode=(select pcCode from PayedTaxCredenceBook where ID=@ID)   
  select @Name=(select Name from PayedTaxCredenceBook where ID=@ID)   
  select @IDCardCode=(select IDCardCode from PayedTaxCredenceBook where ID=@ID)   
 
   if @PayerType='N' 
    begin 
      Update WHTaxpayerTaxBook 
      Set Flags=Flags-8 
      From WHTaxpayerTaxBook A,PayedTaxCredenceBookDetail B 
      where B.PID=@ID And A.Y12M=B.Y12M  
      AND A.Name=@Name AND A.pcCode=@pcCode AND A.IDCardCode=@IDCardCode 
      AND Flags & 8 =8 
    end 
    if @PayerType='P' 
    begin 
      Update PivotTaxpayerTaxBook 
      Set Flags=Flags-8 
      From PivotTaxpayerTaxBook A,PayedTaxCredenceBookDetail B 
      where B.PID=@ID And A.Y12M=B.Y12M  
      AND A.Name=@Name AND A.pcCode=@pcCode AND A.IDCardCode=@IDCardCode 
      AND Flags & 8 =8 
    end 
    if @PayerType='F'     begin 
      Update ForeignTaxpayerTaxBook 
      Set Flags=Flags-8 
      From ForeignTaxpayerTaxBook  A,PayedTaxCredenceBookDetail B 
      where B.PID=@ID And A.Y12M=B.Y12M  
      AND A.Name=@Name AND A.pcCode=@pcCode AND A.PassCode=@IDCardCode     AND Flags & 8 =8 
    end 
    if @Pzhm=0  
    begin 
      delete from PayedTaxCredenceBookDetail where PID=@ID 
      delete from PayedTaxCredenceBook where ID=@ID 
    end 
    else 
    begin 
      Update PayedTaxCredenceBook 
      Set Re='作废('+convert(varchar(10),@TaxerCode)+')'+Convert(varchar(20),GetDate()), 
          IsDestroy=1 
      where ID=@ID 
    end
go

解决方案 »

  1.   

    Create Procedure ZfWspz (ID number, TaxerCode number) 
    AS                  
      PayerTypeP varchar(1) ;
      pcCodeP number ;
      NameP varchar(20) ;
      IDCardCodeP varchar(20) ;
      PzhmP Integer ;
    begin
      select Pzhm into PzhmP from  PayedTaxCredenceBook P where P.ID=ID;
      --select @Pzhm=(select Pzhm from PayedTaxCredenceBook where ID=@ID) 
      select PayerType into PayerTypeP from PayedTaxCredenceBook P where P.ID=ID ;
      --select @PayerType=(select PayerType from PayedTaxCredenceBook where ID=@ID ) 
      select pcCode into pcCodeP from PayedTaxCredenceBook P where P.ID=ID
      --select @pcCode=(select pcCode from PayedTaxCredenceBook where ID=@ID)   
      select Name into NameP from PayedTaxCredenceBook P where P.ID=ID;
      --select @Name=(select Name from PayedTaxCredenceBook where ID=@ID)   
      select IDCardCode into IDCardCodeP from PayedTaxCredenceBook P where P.ID=ID;
      --select @IDCardCode=(select IDCardCode from PayedTaxCredenceBook where ID=@ID)   
     
       if PayerType='N' then
          Update WHTaxpayerTaxBook 
          Set Flags=Flags-8 
          From WHTaxpayerTaxBook A,PayedTaxCredenceBookDetail B 
          where B.PID=ID And A.Y12M=B.Y12M  
          AND A.Name=Name AND A.pcCode=pcCode AND A.IDCardCode=IDCardCode 
          AND Flags & 8 =8 ;
        end if;
        if PayerType='P' then 
          Update PivotTaxpayerTaxBook 
          Set Flags=Flags-8 
          From PivotTaxpayerTaxBook A,PayedTaxCredenceBookDetail B 
          where B.PID=ID And A.Y12M=B.Y12M  
          AND A.Name=Name AND A.pcCode=pcCode AND A.IDCardCode=IDCardCode 
          AND Flags & 8 =8 ;
        end if;
        if PayerType='F' then
          Update ForeignTaxpayerTaxBook 
          Set Flags=Flags-8 
          From ForeignTaxpayerTaxBook  A,PayedTaxCredenceBookDetail B 
          where B.PID=ID And A.Y12M=B.Y12M  
          AND A.Name=Name AND A.pcCode=pcCode AND A.PassCode=IDCardCode     AND Flags & 8 =8 ;
        end if;
        if @Pzhm=0 then 
          delete from PayedTaxCredenceBookDetail where PID=@ID ;
          delete from PayedTaxCredenceBook where ID=@ID ;
        end
        else 
          Update PayedTaxCredenceBook 
          Set Re='作废('+convert(varchar(10),@TaxerCode)+')'+Convert(varchar(20),GetDate()), 
              IsDestroy=1 
          where ID=@ID ;
        end if;
    end ZfWspz;
    /
      

  2.   

    请问eric_1999,是否
     if @Pzhm=0 then 
          delete from PayedTaxCredenceBookDetail where PID=@ID ;
          delete from PayedTaxCredenceBook where ID=@ID ;
        end
        else 
          Update PayedTaxCredenceBook 
          Set Re='作废('+convert(varchar(10),@TaxerCode)+')'+Convert(varchar(20),GetDate()), 
              IsDestroy=1 
          where ID=@ID ;
        end if;
    end ZfWspz;
    中所有的带@变量也全部换成无@?
      

  3.   

    oracle变量不用@,但不能与字段名相同。