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

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

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
几个和循环结构相关的代码,我比较喜欢这个,如下:

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
还是类似的示例程序:

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
看例子:

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从异常处理部分跳转到执行部分

posted @   liulun  阅读(1109)  评论(0编辑  收藏  举报
编辑推荐:
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· .NET 进程 stackoverflow异常后,还可以接收 TCP 连接请求吗?
阅读排行:
· 本地部署 DeepSeek:小白也能轻松搞定!
· 基于DeepSeek R1 满血版大模型的个人知识库,回答都源自对你专属文件的深度学习。
· 在缓慢中沉淀,在挑战中重生!2024个人总结!
· 大人,时代变了! 赶快把自有业务的本地AI“模型”训练起来!
· Tinyfox 简易教程-1:Hello World!
点击右上角即可分享
微信分享提示