create or replace procedure xt_pro4(name varchar2) is
v_sal emp.sal%type;
begin
select sal into v_sal from emp where ename=name;
       if v_sal<1000 then
          update emp set sal=sal+sal*10% where ename=name;
       end if;
end;
/创建的存储过程如上。想要实现 工资小于1000,则涨原有的工资的10%;
问题是:创建存储过程不成功,有警告错误;
但是把“set sal=sal+sal*10%”改为“set sal=sal*1.1”创建过程是可以的。不知道10%这种方法为什么不行?

解决方案 »

  1.   

    晕,在所有计算机语言中的算术表达式中都没有sal*10%可以这样写,
    也就是不能使用百分号来表示百分之多少,并且该符号在一些语言中被用作其它定义。所以写set sal=sal*1.1是最正确的作法
      

  2.   

    oracle里%不会用在数学运算上的,在查询和变量定义时到会用到啊
    like '%x%'
    v_sal emp.sal%type
      

  3.   

    create or replace procedure xt_pro4(name varchar2) is
    v_sal emp.sal%type;
    begin
    select sal into v_sal from emp where ename=name;
      if v_sal<1000 then
      update emp set sal=sal*1.1 where ename=name;
      end if;
    end;
    /
      

  4.   

    update emp set sal=sal+sal*10% where ename=name and sal<1000一句话就行了,不用过程