前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PL/SQL学习笔记-循环控制与顺序控制

PL/SQL学习笔记-循环控制与顺序控制

作者头像
liulun
发布2022-05-09 11:00:12
2020
发布2022-05-09 11:00:12
举报
文章被收录于专栏:liulun

一:LOOP...END LOOP 先看代码

代码语言:javascript
复制
declare
v_flag number := 1;
begin
loop 
       exit when v_flag>16;
       v_flag := v_flag+1;
       dbms_output.put_line(to_char(v_flag));
end loop;
end;

其中exit when是跳出循环的条件, 注意代码中的分号,挺重要的。没有分号会报错 二:while……loop….end loop 几个和循环结构相关的代码,我比较喜欢这个,如下:

代码语言:javascript
复制
declare
v_flag number := 1;
begin
while v_flag<16 loop
       v_flag := v_flag+1;
       dbms_output.put_line(to_char(v_flag));
end loop;
end;

注意这个示例程序和上个示例程序的输出结果是不同的 具体为什么不同我就不多解释了 三:for…loop…end loop 还是类似的示例程序:

代码语言:javascript
复制
declare
v_flag number := 1;
begin
for v_flag in 2..16 loop
       --v_flag := v_flag+1;
       dbms_output.put_line(to_char(v_flag));
end loop;
end;

注意我用--注释掉了一句 因为在这个循环体内,是不允许为哨兵变量赋值的 哨兵变量不知道啥意思?hehe --是注释单行的写法 /*  …..*/可以注释多行 四:顺序控制goto 看例子:

代码语言:javascript
复制
declare
v_flag number := 1;
begin
while v_flag<16 loop
       v_flag := v_flag+1;
       dbms_output.put_line(to_char(v_flag));
       if mod(v_flag,6) = 0 then
          goto lable_1;
       end if;
end loop;
<<lable_1>>
dbms_output.put_line('跳出来了');
end;

mod(v,n)是取余数的意思, 这里写这个函数其实没意义 还不如直接判断变量是否等六 另外需要注意的是goto语句有很多限制 以下都是不被允许的: 1跳转到非执行语句前面 2跳转到子块中 3跳转到条件语句中 4跳转到循环语句中 5从条件语句的一部分跳转到另一部分 6从异常处理部分跳转到执行部分

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2009-07-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档