Oracle 中的修改数据?用游标!!!

m540920181 2011-10-09 10:55:29
--------------用游标修改工资--------
declare
cursor mysor is select * from emp ;
mysal emp.sal%type;
begin
for i into mysor
loop
if i.deptno = 10 then
mysal := (mysal+500)*2;
update emp set sal=mysal where current of mysor;
elsif i.deptno = 20 then
mysal := mysal+500;
update emp set sal=mysal where current of mysor;

else
mysal := mysal - 500;
update emp set sal=mysal where current of mysor;

end if ;
end loop;
end;


上面代码可以成功运行但是为什么里面要用 mysal := mysal-500 并且把mysal的值赋给sal ;
为什么直接写sal=sal-500;运行报错:
有谁了解Oracle中游标,望解答疑问》???
...全文
622 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
guoxu775 2012-10-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

引用 3 楼 lzd_83 的回复:
好好学习oracle基础吧!变量的赋值只能是
变量:=值,所以mysal := mysal+500;必须是这样的这是oracle规定。


不好意思了 ,我找到答案了,上述代码没有问题,问题是:上面运行了,但在当时查询的时候值没有改变
这个程序结束以后,重新用select 语句查询,他们的结果已近改变了....
[/Quote]

你是修改表的数据 还是修改游标这个暂时内存区的数据呢?
m540920181 2011-10-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lzd_83 的回复:]
好好学习oracle基础吧!变量的赋值只能是
变量:=值,所以mysal := mysal+500;必须是这样的这是oracle规定。
[/Quote]

不好意思了 ,我找到答案了,上述代码没有问题,问题是:上面运行了,但在当时查询的时候值没有改变
这个程序结束以后,重新用select 语句查询,他们的结果已近改变了....
m540920181 2011-10-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fuwenhai 的回复:]
看来你不了解游标语法,游标中为变量等赋值都是用 :=,而不用=
变量 := 值
[/Quote]

记得那些是在select中查询的语句,可以使用sal=sal+500;
NLP爱好者 2011-10-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lzd_83 的回复:]
好好学习oracle基础吧!变量的赋值只能是
变量:=值,所以mysal := mysal+500;必须是这样的这是oracle规定。
[/Quote]

oracle数据库plsql语法要多熟悉哦!!!!
eclipseluo 2011-10-09
  • 打赏
  • 举报
回复
是啊!!
Rotel-刘志东 2011-10-09
  • 打赏
  • 举报
回复
好好学习oracle基础吧!变量的赋值只能是
变量:=值,所以mysal := mysal+500;必须是这样的这是oracle规定。
luyun2011 2011-10-09
  • 打赏
  • 举报
回复
看来你不了解游标语法,游标中为变量等赋值都是用 :=,而不用=
变量 := 值
biandongfeng 2011-10-09
  • 打赏
  • 举报
回复
那应该是你的逻辑要求这样的

给一个参数赋值时,语法就是 参数:=具体值,

17,140

社区成员

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

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