嘿嘿...今天这个循环语句把我弄得好晕啊!!不过在我Google半天后终于明白了,
所以今天把这些Oracle的循环语句总结 了一下。
loop 语句(至少被执行一次):
例子:
declare
i int:=1;
begin
loop
dbms_output.put_line(i);
exit when i= 100;
i:=i+1;
end loop;
end;
/
while语句(相当于把loop语句的退出条件放到了前面):
例子:
declare
i int:=1;
begin
while i<= 100 loop !!! 注意啦!!这里是布尔表达式 啊!!如果不知道啥是布尔表达式那就Google吧!!
dbms_output.put_line(i);
i:=i+1;
end loop;
end;
/
for语句(这个嘛,分两种)
第一种、这种就是Oracle通常见到的for语句
例子:
begin
for i in 1..100 loop
dbms_output.put_line(i);
end loop;
end;
/
第二种、这种就是只有在游标 里才可以看到的for循环(游标FOR循环 百年一见啊..),就是这个我最不明白,开始还以为语句写错了呢!呵呵...
例子:
(1)这个要先建立一个测试表 :
create table test(cou_no number,name varchar2(10),grade number);
(2)向测试表 里插入值
insert into test values(1,'scott',90);
insert into test values(2,'tiger',70);
insert into test values(1,'james',80);
insert into test values(2,'king',89);
(3)终于 可以运用游标的FOR循环语句 了!!!!这个语句主要是把cou_no列里值为”1“的grade值减10 。
这语句里的大写单词的作用,主要是在更新时给行加锁 ,以防多用户都一起改一个值。
declare
cursor tt_cursor is
select * from test FOR UPDATE;
begin
for rec_cursor in tt_cursor loop
if rec_cursor.cou_no=1 then
update test set grade=grade-10 WHERE CURRENT OF tt_cursor;
end if;
end loop;
end;
/
总算总结完了,累死我了。。。。。。。