我想用oracle中的function调用下面的package 用
function输入3个值 调用package 后返回给function
请问怎么写
CREATE OR REPLACE PACKAGE BODY LESSON.PK_SHUILV 
IS
PROCEDURE PK_SHUILV  
/* Com=commodity Pri=price Pre=precision */
          ( InputDate              in         CHAR,
            InpuComCode            in         number,   
            InputComNum            in         number,
            Tax                    out        number, 
            Pri                    out        number,
            TaxAndPri              out        number,
            OutputTax              out        number, 
            OutputPri              out        number,
            OutputTaxAndPri        out        number,
            TaxRate                out        number,  
            TaxType                out        number,  
            Pre                    out        number,  
            UnitPri                out        char,   
            CodeErr                out        char,
            DateErr                out        date,
            MyReturn               out        NUMBER
          ) is
CodeNum NUMBER;
BEGIN
DateErr:=to_date(InputDate,'YYYY-MM-DD');
/***************************** tax ******************************/
     select Code     
     into  CodeErr  
     from  T3         
     where CODE = InpuComCode;       select TAX      
     into  TaxRate  
     from  LESSON.T1
     where DATENOW = InputDate;     select TAXTYPE  
     into  TaxType
     from  LESSON.T3  
     where CODE = InpuComCode;     select TAXDEF 
     into  Pre      
     from  LESSON.T3  
     where CODE = InpuComCode;     select PRICE    
     into  UnitPri  
     from  LESSON.T2  
     where CODE = InpuComCode;IF TaxType = 0 THEN
Tax:= (UnitPri-(UnitPri/TaxRate));
Pri:= UnitPri*InputComNum - Tax*InputComNum;
END IF;IF      TaxType = 1 THEN
Tax:= UnitPri * (TaxRate - 1);
Pri:= UnitPri*InputComNum;
END IF;TaxAndPri:= Tax*InputComNum + Pri;
/***************************** precision ******************************/
IF      Pre = 0 THEN
OutputTax:=round(Tax,1)*InputComNum;
OutputPri:=round(Pri,1);
END IF;IF      Pre = 1 THEN
OutputTax:=ceil(Tax)*InputComNum;
OutputPri:=ceil(Pri);
END IF;IF      Pre = 2 THEN
OutputTax:=floor(Tax)*InputComNum;
OutputPri:=floor(Pri);
END IF;OutputTaxAndPri:= OutputTax+OutputPri;END;END;
/

解决方案 »

  1.   

    function里定义一个package变量a,然后a.PK_SHUILV(参数)这样调用,要接受返回的话就用一个同类型的接收返回数据。
      

  2.   

    CREATE OR REPLACE FUNCTION LESSON.FUN_DY_PK_SHUILV 
              ( InputDate              in         CHAR,
                InpuComCode            in         number,   
                InputComNum            in         number,      
                OutputTax              out        number, 
                OutputPri              out        number,
                OutputTaxAndPri        out        number,        
                MyReturn               out        number
              ) 
    RETURN number
    IS
    a char;
    BEGIN
    a.PK_SHUILV('InputDate',InpuComCode,InputComNum);END;
    /说a无效 请问?