--编写函数计算订单应缴税收:传入订单编号,返回应交税金额。0-200 缴总金额的5% ;201--400缴总金额的7%;400-800缴总金额的9%;800以上缴总金额的10%。执行验证之
create or replace function orders(id number) return number
is
  money number(10);
begin
   select price*quantity into money from orderdetails where orderid=id;
   when money between 0 and 200 then 
     return money*0.05;
   when money between 201 and 400 then 
     return money*0.07;
   when money between 401 and 800 then 
     return money*0.09;
   when money>800 then
     return money*0.1;
 end;错误提示为:程序包或者函数无效

解决方案 »

  1.   

    begin
    case when... then... else... end;
    end;
      

  2.   


    create or replace function orders(id number) return number is
      money number(10);
    begin
      select price * quantity into money from orderdetails where orderid = id;
      case
        when money between 0 and 200 then
          return money * 0.05;
        when money between 201 and 400 then
          return money * 0.07;
        when money between 401 and 800 then
          return money * 0.09;
        when money > 800 then
          return money * 0.1;
      end case;
    end;case...when
      

  3.   

    把case  when 写到selet 语句中,一条语句解决问题。
      

  4.   

    在你查询的语句里面直接用case when ... end;处理吧,没必要写一个方法
      

  5.   

    用plsql developer调试吧,错误信息比较详细,
    2L答案已经差不多了,还报错的话,调试一下。