一、控制结构的作用和类型

1.作用:在PL/SQL块内部使用控制结构来更改程序的逻辑

2.类型:条件IF语句、CASE语句、循环语句

①条件控制语句

类型:

·简单条件判断(IF-THEN)

语句:

IF condition THEN

Statements

END IF;

实例:

SQL> DECLARE

2    myage NUMBER :=10;

3  BEGIN

4    IF myage<11 THEN

5      dbms_output.put_line('I am a child');

6    END IF;

7  END;

8  /

I am a child

PL/SQL procedure successfully completed

·二重条件判断(IF-THEN-ELSE)

语法:

IF condition THEN

Statements;

ELSE

Statements;

END IF;

实例:

SQL> DECLARE

2    myage NUMBER :=18;

3  BEGIN

4    IF myage<11 THEN

5      dbms_output.put_line('I am a child');

6    ELSE

7      dbms_output.put_line('I am not a child');

8    END IF;

9  END;

10  /

I am not a child

PL/SQL procedure successfully completed

·多重条件判断(IF-THEN-ELSIF)

语法:

IF condition THEN

Statements;

ELSIF condition THEN

Statements;

ELSE

Statements;

END IF;

实例:

SQL> DECLARE

2    myage NUMBER :=18;

3  BEGIN

4    IF myage<11 THEN

5      dbms_output.put_line('I am a child');

6    ELSIF myage<20 THEN

7      dbms_output.put_line('I am not a child');

8    ELSE

9      dbms_output.put_line('I am always young');

10    END IF;

11  END;

12  /

I am not a child

PL/SQL procedure successfully completed

二、CASE 语句

①作用: CASE表达式返回基于一个或多个备选项的结果

②语法:

CASE  selector

WHEN exp1 THEN res1

WHEN exp2 THEN res2

WHEN exp3 THEN res3

……

[ELSE resN]

END;

实例:

SQL> DECLARE

2    v_mygrade CHAR(1) :='A';

3    v_res  VARCHAR2(20);

4  BEGIN

5    v_res :=CASE v_mygrade

6         WHEN 'A' THEN

7           'The mark is 90-100'

8         WHEN 'B' THEN

9         'The mark is 80-90'

10          WHEN 'C' THEN

11            'The mark is 70-80'

12            WHEN'D' THEN

13            'The mark is 60-70'

14            WHEN 'E' THEN

15            'The mark is 0-60'

16            END;

17       dbms_output.put_line(v_res);

18   END;

19  /

The mark is 90-100

PL/SQL procedure successfully completed

三、NULL值处理

AND

TRUE

FALSE

NULL

TRUE

TRUE

FALSE

NULL

FALSE

FALSE

FALSE

FALSE

NULL

NULL

FALSE

NULL

OR

TRUE

FALSE

NULL

TRUE

TRUE

TRUE

TRUE

FALSE

TRUE

FALSE

NULL

NULL

TRUE

NULL

NULL

NOT

 

TRUE

FALSE

FALSE

TRUE

NULL

NULL

四、循环语句

·循环是指多次循环处理一条语句或一段逻辑

·循环原则:

①如果循环内部必须执行一次,则使用基本循环

②如果必须在每次循环开始时判断条件,则使用WHILE循环

③如果知道循环次数,则使用FOR循环

·循环类型:

—基本循环

语法:

LOOP

Statement;

……

EXIT [WHEN condition];

END LOOP

实例:

SQL> DECLARE

2    i NUMBER :=0;

3  BEGIN

4    LOOP

5      dbms_output.put_line(i);

6      i :=i+1;

7      EXIT WHEN i=10;

8    END LOOP;

9  END;

10  /

0

1

2

3

4

5

6

7

8

9

PL/SQL procedure successfully completed

—FOR循环

语法:

FOR  counter IN [REVERSE] lower_bound..upper_bound

LOOP

Statement1;

Statement2;

END LOOP;

实例:

SQL> DECLARE

2   v_count NUMBER;

3  BEGIN

4    FOR i IN 1..10

5      LOOP

6        INSERT INTO t1 VALUES(i,'tom'||i,'ok');

7      END LOOP;

8      COMMIT;

9      SELECT COUNT(*) INTO v_count FROM t1;

10      dbms_output.put_line('T1 rows is:' ||v_count);

11   END;

12  /

T1 rows is:10

PL/SQL procedure successfully completed

SQL> select * from t1;

ID NAME DSC

--------------------------------------- ---------- --------------------

2 tom2   ok

1 tom1   ok

3 tom3   ok

4 tom4   ok

5 tom5   ok

6 tom6   ok

7 tom7   ok

8 tom8   ok

9 tom9   ok

10 tom10 ok

10 rows selected

—WHILE循环

语法:

WHILE condition LOOP

Statement1;

Statement2;

……

END LOOP;

实例:

SQL> DECLARE

2    v_num NUMBER :=1;

3    v_count NUMBER;

4  BEGIN

5    WHILE v_num <=10 LOOP

6      INSERT INTO t1 VALUES(v_num,'tom'||v_num,'ok');

7      v_num :=v_num+1;

8     END LOOP;

9     COMMIT;

10     SELECT COUNT(*) INTO v_count FROM t1;

11     dbms_output.put_line('T1 rows is :'||v_count);

12   END;

13  /

T1 rows is :10

PL/SQL procedure successfully completed

SQL> select * from t1;

ID NAME DSC

--------------------------------------- ---------- --------------------

1 tom1   ok

2 tom2   ok

3 tom3   ok

4 tom4   ok

5 tom5   ok

6 tom6   ok

7 tom7   ok

8 tom8   ok

9 tom9   ok

10 tom10 ok

10 rows selected

【PL/SQL】 控制结构相关推荐

  1. PL/SQL控制结构

    顺序结构 按先后顺序 分支判断结构 IF语句 IF condition THEN statements; [ELSIF condition THEN statements;] [ELSE statem ...

  2. (ORACLE)PL/SQL 编程

    标识符的规范 1.定义变量,用v_作为前缀 2.定义常量,用c_作为前缀 3.定义游标,用_cursor作为后缀 4.定义列外,用e_作为前缀 块(block) PL\SQL的程序基本单元 编写PL\ ...

  3. oracle pl sql注意问题,Oracle PL/SQL编写PL/SQL代码的注意事项

    (1)几个值得注意的关键字(2)变量常量赋值注意: ---------------------------------------------------------------------[@mor ...

  4. PL/Sql循序渐进全面学习教程(下)(ZT)

    课程一.声明变量    本课重点:    1.了解基本的PLSQL块和区域    2.描述变量在PLSQL中的重要性    3.区别PLSQL与非PLSQL变量    4.声明变量    5.执行PL ...

  5. Oracle PL/SQL入门之慨述

    一.PL/SQL出现的目的 结构化查询语言(Structured Query Language,简称SQL)是用来访问关系型数据库一种通用语言,它属于第四代语言(4GL),其执行特点是非过程化,即不用 ...

  6. Oracle PL/SQL语言入门

    一.背景介绍 结构化查询语言(Structured Query Language,简称SQL)是用来访问关系型数据库一种通用语言,属于第四代语言(4GL),其执行特点是非过程化,即不用指明执行的具体方 ...

  7. 每周一书《Oracle 12 c PL(SQL)程序设计终极指南》

    本周为大家送出的书是<Oracle 12 c PL(SQL)程序设计终极指南>,此书由机械工业出版社出版, 孙风栋,王澜,郭晓惠 著. 内容简介: <Oracle 12c PL/SQ ...

  8. PL/SQL 处理流程

    P249 -P254  oracle8i_9i数据库基础--查看本号百度文库 ***********PL/SQL 简介*************** 1.PL/SQL 是过程语言(Procedural ...

  9. 在Oracle中不通过存储过程一次执行多条SQL语句Oracle PL/SQL

    PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本文将讲述PL/SQL ...

最新文章

  1. 如何使用 Arthas 定位 Spring Boot 接口超时 ?
  2. php 截取字符串的方法,php截取字符串的方法介绍
  3. 1.2.1 算法的基本概念
  4. c语言程序设计 江宝钏 实验九,c语言程序设计,江宝钏著,实验九.docx
  5. trade-off 翻译
  6. matplotlib 绘制梯度下降求解过程
  7. 极度烧脑+惊人发现:4个颠覆你世界观的量子理论实验
  8. 浏览器打不开python的页面_robotframework,selenium启动不了打不开浏览器的问题访问不了网页...
  9. github生成燃尽图
  10. 【最短路径问题笔记】Floyd算法求多源最短路径问题
  11. 只显示 前100个字 java 实现截取字符串!使用! c:if test=${fn:length(onebeans.info)100 }${ fn:substri...
  12. Google是如何赚钱的 -- 四年工作离别小结
  13. mac/linux下java项目使用本机自带ssh和scp命令,自动复制上传并部署的脚本
  14. 实战:手把手教你开发React应用-郭永峰-专题视频课程
  15. Android开发方向,我们如何选择?
  16. OTFS调制中的干扰分析
  17. 下载丨66页PDF,云和恩墨技术通讯(2022年7月刊)
  18. java sha1加密ascii码_MD5,SHA1,SHA256,SHA512等常用加密算法
  19. 求给定正整数m以内的素数之和
  20. 浙江省计算机提前招分数线,【高考】2020年浙江省提前批各高校录取分数线汇总,建议收藏...

热门文章

  1. 某大型银行深化系统技术方案之十二:服务层之服务分类
  2. Windows 8 Directx 开发学习笔记(三)摄像机设置及控制正方体旋转
  3. 【转】Python之装饰器
  4. C# 利用SQLite对.DB和.logdb加密和解密和SQLite创建数据库
  5. 使用/调用 函数的时候, 前面加不加 对象或 this?
  6. java传递和返回对象
  7. (翻译)正确实施DevOps-The Lay of the Land
  8. 禁用并删除 Wordpress 文章修订(revision)记录
  9. Andriod UI设计之度量单位说明(DIP,DP,PX,SP)
  10. 在Flex中获取一个屏幕截图(Screenshot)并将其传递给ASP.NET