oracle中更新数据问题

xia_t 2011-06-17 10:16:06
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%这种方法为什么不行?
...全文
81 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
swot2larry 2011-06-17
  • 打赏
  • 举报
回复
oracle里%不会用在数学运算上的,在查询和变量定义时到会用到啊
like '%x%'
v_sal emp.sal%type
  • 打赏
  • 举报
回复
人家不认识%嘛
tangren 2011-06-17
  • 打赏
  • 举报
回复
晕,在所有计算机语言中的算术表达式中都没有sal*10%可以这样写,
也就是不能使用百分号来表示百分之多少,并且该符号在一些语言中被用作其它定义。

所以写set sal=sal*1.1是最正确的作法
biandongfeng 2011-06-17
  • 打赏
  • 举报
回复
呵呵,楼主真有意思,%是一个运算符,怎么会去用来表示数据呢
jdsnhan 2011-06-17
  • 打赏
  • 举报
回复
update emp set sal=sal+sal*10% where ename=name and sal<1000

一句话就行了,不用过程
luoyoumou 2011-06-17
  • 打赏
  • 举报
回复
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;
/
20804036 2011-06-17
  • 打赏
  • 举报
回复
晕,这个'%'在自然语言中大多用以表述一个大概的量,是个报告类用词。
在计算机当中的任何计算都应该是精确化的。

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧