Oracle/PL/SQL奇技淫巧之Lable标签与循环控制

在一些存储过程场景中,可能存在需要在满足某些条件时跳出循环的场景,

但是在PL/SQL中,不能使用break语句直接跳出循环,

但是可以通过lable标签的方式跳出循环,例:

sql 复制代码
<<outer_loop>>
FOR i IN 1..5 LOOP
  DBMS_OUTPUT.PUT_LINE('外层循环:' || i);

  <<inner_loop>>
  FOR j IN 1..5 LOOP
    DBMS_OUTPUT.PUT_LINE('内层循环: ' || j);
    
    -- Use a condition to break out of the outer loop
    IF i = 2 AND j = 3 THEN
      EXIT outer_loop;
    END IF;
  END LOOP inner_loop;
END LOOP outer_loop;

在这个例子中,

我们有一个标记为outer_loop的外部循环和一个标记为inner_loop的内部循环

在内部循环中,有一个i = 2 AND j = 3条件, 如果此条件满足,则使用EXIT语句跳出外部循环

标签使用<<label_name>>语法定义,

可以在任何循环语句(FOR循环、WHILE循环或LOOP语句)之前放置标签来标记它,

然后,标签可以与EXITCONTINUE等控制流语句搭配使用,以指定退出或继续哪个循环。

最后看执行结果:

text 复制代码
外层循环:1
内层循环:1
内层循环:2
内层循环:3
内层循环:4
内层循环:5
外层循环:2
内层循环:1
内层循环:2
内层循环:3
相关推荐
爱编程的小白L1 小时前
基于springboot志愿服务管理系统设计与实现(附源码)
java·spring boot·后端
聪明的笨猪猪3 小时前
Java Redis “持久化”面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
聪明的笨猪猪3 小时前
Java Redis “核心基础”面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
稚辉君.MCA_P8_Java5 小时前
JVM第二课:一文讲透运行时数据区
jvm·数据库·后端·容器
奋斗的小monkey5 小时前
Spring Boot 3.x核心特性与性能优化实战
java·spring boot·微服务·性能优化·响应式编程
程序猿DD6 小时前
将 GPU 级性能带到企业级 Java:CUDA 集成实用指南
java·架构
阳光明媚sunny6 小时前
Room持久化库中,@Transaction注解的正确使用场景是?
android·数据库
北极糊的狐6 小时前
MySQL常见报错分析及解决方案总结(15)---Can’t connect to MySQL server on ‘localhost‘ (10061)
数据库·mysql
濑户川6 小时前
Django5 与 Vue3 表单交互全解析:从基础到实战
数据库