自学PL/SQL 第四讲Writing Control Structures

简介:

本讲内容包括:
介绍控制语句的类型和用法
IF语句的结构
CASE表达式
介绍不同的循环语句
使用嵌套循环和标签

一:在PL/SQL中可以使用IF和LOOP进行分支判断和嵌套循环
IF语句的结构主要有:
– IF-THEN-END IF
– IF-THEN-ELSE-END IF
– IF-THEN-ELSIF-END IF

IF语句的语法:


 
 
  1. IF condition THEN  
  2.    statements;  
  3. [ELSIF condition THEN  
  4.    statements;]  
  5. [ELSE  
  6.    statements;]  
  7. END IF; 

condition是布尔型的变量(TRUE,FALSE,NULL)和表达式,只有条件返回为TRUE的时候后面的语句才会执行:
condition is a Boolean variable or expression (TRUE, FALSE,or NULL). (It is associated with a sequence of statements, which is executed only if the expression yields TRUE.)

THEN is a clause that associates the Boolean expression that precedes it with the sequence of statements that follows it. statements can be one or more PL/SQL or SQL statements. (They may include further IF statements containing several nested IF, ELSE,and ELSIF statements.)

ELSIF is a keyword that introduces a Boolean expression. (If the first condition yields FALSE or NULL then the ELSIF keyword introduces additional conditions.)
ELSE is a keyword that executes the sequence of statements that follows it if the control reaches it.

复合型的IF条件语句,可以使用AND和OR操作符


 
 
  1. IF v_ename = 'Vargas' AND salary > 6500 THEN  
  2. v_deptno :60;  
  3. END IF; 

可以嵌套IF条件语句


 
 
  1. IF condition1 THEN  
  2. statement1;  
  3. ELSE  
  4. IF condition2 THEN  
  5. statement2;  
  6. END IF;  
  7. END IF;  
  8.  
  9. IF condition1 THEN  
  10. statement1;  
  11. ELSIF condition2 THEN  
  12. statement2;  
  13. ELSIF condition3 THEN  
  14. statement3;  
  15. END IF; 

 二:CASE表达式,可以使用CASE表达式,匹配并返回结果


 
 
  1. CASE selector  
  2. WHEN expression1 THEN result1  
  3. WHEN expression2 THEN result2  
  4. ...  
  5. WHEN expressionN THEN resultN  
  6. [ELSE resultN+1;]  
  7. END;  
  8.  
  9. SQL> set serveroutput on  
  10. SQL> set verify off  
  11. SQL> define p_1=c 
  12. DECLARE  
  13.    v_1 CHAR(1) :UPPER('&p_1');  
  14.    v_2 VARCHAR2(20);  
  15. BEGIN  
  16.     v_2 :=  
  17. CASE v_1  
  18.    WHEN 'A' THEN 'ONE'  
  19.    WHEN 'B' THEN 'TWO'  
  20.    WHEN 'C' THEN 'THREE'  
  21.    ELSE 'NOTHING'  
  22. END;  
  23.    DBMS_OUTPUT.PUT_LINE ( v_2 || '  map ' || v_1);  
  24. END;  
  25.  
  26. SQL> /  
  27. THREE  map C  
  28. PL/SQL 过程已成功完成 

三:处理空值
任何值(包括空值)和空值比较返回空值,如果IF语句的条件返回为空,则后面的分支不会执行

 四:loop循环;loop循环分basic,for,while三种


 
 
  1. basic循环语法:  
  2. LOOP                             -- delimiter  
  3. statement1;                    -- statements  
  4. ...  
  5. EXIT [WHEN condition];  -- EXIT statement  
  6. END LOOP;                    -- delimiter  
  7.  
  8. condition is a Boolean variable or  
  9. expression (TRUE, FALSE, or NULL);  
  10.  
  11. for循环语法:  
  12. FOR counter IN [REVERSE]  
  13. lower_bound..upper_bound LOOP  
  14. statement1;  
  15. statement2;  
  16. ...  
  17. END LOOP;  
  18.  
  19. DECLARE  
  20. v_lower NUMBER :1;  
  21. v_upper NUMBER :100 
  22. BEGIN  
  23. FOR i IN v_lower..v_upper LOOP  
  24. ...  
  25. END LOOP;  
  26. END; 

循环指导原则:
Use the basic loop when the statements inside the loop must execute at least once.
Use the WHILE loop if the condition has to be evaluated at the start of each iteration.
Use a FOR loop if the number of iterations is known.

五:嵌套循环,循环可以被无限嵌套,在不同的循环块上使用标签,使用exit退出循环


 
 
  1. BEGIN  
  2. <<Outer_loop>> 
  3. LOOP  
  4.    v_counter :v_counter+1;  
  5.    EXIT WHEN v_counter>10;  
  6.    <<Inner_loop>> 
  7.    LOOP  
  8.    ...  
  9.   EXIT Outer_loop WHEN total_done = 'YES';  
  10.    -- Leave both loops  
  11.   EXIT WHEN inner_done = 'YES';  
  12.   -- Leave inner loop only  
  13.   ...  
  14.   END LOOP Inner_loop;  
  15.   ...  
  16. END LOOP Outer_loop;  
  17. END; 

 本文转自斩月博客51CTO博客,原文链接http://blog.51cto.com/ylw6006/656775如需转载请自行联系原作者


ylw6006

相关文章
|
5天前
|
存储 弹性计算 缓存
阿里云服务器租赁费用:新版租赁收费标准及活动报价参考
本文更新了2026年阿里云全系列云服务器租赁活动报价,所有特惠资源均可前往阿里云活动中心选购,整体覆盖从个人入门到企业级高性能场景的全梯度需求。其中轻量应用服务器主打极致性价比,2核2G峰值200M带宽配置每日10点、15点限时抢购价仅38元/年,2核4G配置379元/年起;高性价比的经济型e实例、通用算力型u2i实例覆盖2核4G至4核32G全档位,适配开发测试与中小型企业业务;搭载英特尔至强6处理器的第九代c9i企业级实例算力较上代提升20%,支撑高并发生产环境,不同实例规格价差清晰,用户可根据自身业务负载与预算灵活选型。
1573 112
|
12天前
|
云安全 人工智能 运维
阿里云联动百位企业安全专家,共识Agent防御最佳实践
当Agent成为新员工,你的安全边界在哪里?
1941 8
阿里云联动百位企业安全专家,共识Agent防御最佳实践
|
6天前
|
人工智能 程序员 API
Codex 接入 DeepSeek-V4-Flash:还能补上识图,提供两套方案
Codex 接入 DeepSeek-V4-Flash 怎么配?本文覆盖 CLI 与桌面端,再用 qwen3-vl-flash 补识图,两套方案可直接照做
|
6天前
|
编解码 人工智能 安全
2核4G/4核8G/8核16G阿里云服务器如何选择实例?经济型e、通用算力型u2i与计算型c9i选哪个?
本文介绍了阿里云2核4G、4核8G、8核16G三档主流配置下经济型e、通用算力型u2i和计算型c9i三种实例的最新活动价格与适用场景。同配置下三者价差显著,以2核4G为例,经济型e低至599.93元/年,计算型c9i则高达1742.08元/年。文章详细解析了各实例的性能定位:经济型e适合轻负载入门场景,u2i兼顾稳定算力与性价比,c9i凭借第9代至强处理器与芯片级安全能力支撑高性能业务。同时提示用户可叠加满减优惠券享受折上折,建议根据业务负载与预算综合决策。
528 112
|
18天前
|
人工智能 前端开发 Linux
Codex 桌面版安装 + CC Switch 接入第三方 API 完整教程(2026 最新)
2026最新教程:手把手教你安装Codex桌面版,通过CC Switch v3.17.0一键接入Fenno等国产API(兼容OpenAI Responses格式),跳过账号登录,完整启用代码审查、多步任务与上下文感知功能。零基础友好,全程图文实操。(239字)
2566 4
|
10天前
|
存储 人工智能 关系型数据库
阿里云AI产品与云产品最新组合套餐:Token Plan、AI coding及云服务器和建站等组合优惠价
阿里云推出全新“算力+模型+应用”一站式云与AI组合套餐活动,覆盖从个人开发者到中大型企业的全场景需求。核心亮点为分三档定价的Token Plan订阅服务,支持Qwen3.8-Max-Preview大模型调用,错峰时段最低可享0.2折优惠。活动同步推出AI Coding、智能体部署、云电脑托管、0代码建站等十余类场景化组合,搭配99元/年的普惠云服务器、88元/年的入门数据库等经典特惠产品,还为企业提供1V1定制化AI转型方案,大幅降低了不同用户群体拥抱AI的技术门槛与采购成本。
721 111
|
20天前
|
人工智能 JSON 安全
Fastjson远程代码执行漏洞,阿里云AI安全为您保驾护航
阿里云AI安全产品联动防御Fastjson攻击
2635 13
Fastjson远程代码执行漏洞,阿里云AI安全为您保驾护航
|
6天前
|
人工智能 JSON Shell
2026AI漫剧本地全开源方案(附各个软件模型链接),8G显卡也能流畅运行
这是一套完全本地化部署的AI漫剧生成技术链路:涵盖LLM剧本分镜生成、FLUX文生图(IP-Adapter人脸锁定)、StoryDiffusion时序连贯控制、LTX-2.3唇形同步视频生成,及ComfyUI全流程调度。零云端费用,仅耗硬件算力,单集2–4小时可产出竖屏短视频,适配抖音/B站分发。
|
7天前
Qoder 一周年 × Qwen3.8-Max 正式上线,多重好礼限时领
8月3日,Qwen3.8-Max 正式上线Qoder,迎来Qoder一周年。新老用户可领800次免费调用,下单再赠2000次;夜间(22:00–08:00)调用5折;邀请好友双方得积分与调用额度。
448 1

热门文章

最新文章