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
相关推荐
李坤林11 小时前
Android Binder 详解(4) Binder 线程池
android·java·binder
代码方舟11 小时前
Java后端实战:构建基于天远手机号码归属地核验的金融级风控模块
java·大数据·开发语言·金融
困知勉行198511 小时前
springboot整合redis
java·spring boot·redis
颜淡慕潇11 小时前
深度解析官方 Spring Boot 稳定版本及 JDK 配套策略
java·后端·架构
中年程序员一枚11 小时前
Springboot报错Template not found For name “java/lang/Object_toString.sql
java·spring boot·python
知识分享小能手12 小时前
Ubuntu入门学习教程,从入门到精通,Ubuntu 22.04中的Java与Android开发环境 (20)
java·学习·ubuntu
龙亘川12 小时前
【课程5.1】城管住建核心功能需求分析:市政设施、市容秩序等场景痛点拆解
数据库·oracle·智慧城市·城管住建
南屿欣风12 小时前
FeignClient 踩坑:@FeignClient 同时配 value 和 url 的 “无效服务名” 问题
java
飞鸟真人12 小时前
Redis面试常见问题详解
数据库·redis·面试
豆沙沙包?12 小时前
2026年--Lc329-735. 小行星碰撞(栈)--java版
java·开发语言