PL/SQL之流程控制语句
来源:互联网 发布:硅谷密探软件 编辑:程序博客网 时间:2024/05/24 06:16
流程控制:IF语句;CASE语句;
循环语句:LOOP语句,EXIT语句;
顺序语句:GOTO语句,NULL语句;
1.条件语句
语法:
IF <布尔表达式> THEN SQL语句和PL/SQL语句END IF;-----------------------------IF <布尔表达式> THEN SQL语句和PL/SQL语句ELSE 其他SQL语句和PL/SQL语句END IF;-----------------------------IF <布尔表达式> THEN SQL语句和PL/SQL语句ELSIF <布尔表达式> THEN SQL语句和PL/SQL语句.....可以多个elsifELSE SQL语句和PL/SQL语句END IF;特别注意:elsif千万不能写成elseif,这是PL/SQL设计者的问题
实例使用:
第一步,创建表,插入数据
create table mytest( id number(3), name varchar2(20), age number(3) ); insert into mytest values(1,'one',18); insert into mytest values(2,'two',20); insert into mytest values(3,'three',24); commit;第二步,使用条件语句
DECLARE v_age mytest.age%TYPE;BEGIN SELECT age INTO v_age FROM mytest WHERE id=1; IF v_age < 18 THEN--条件判断开始 DBMS_OUTPUT.PUT_LINE('未成年'); ELSIF v_age >= 18 AND v_age <= 30 THEN DBMS_OUTPUT.PUT_LINE('青年人'); ELSIF v_age > 30 AND v_age <= 60 THEN DBMS_OUTPUT.PUT_LINE('中年人'); ELSE DBMS_OUTPUT.PUT_LINE('老年人'); END IF;--条件判断结束EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('异常抛出');END;
2.CASE表达式
CASE表达式有两种格式,在SQL和PL/SQL不一样的是,sql中以end结束,pl/sql中以end case结束。
格式一:
CASE 条件表达式 WHEN 表达式结果1 THEN 语段1 WHEN 表达式结果2 THEN 语段2 ... [ELSE 语句段]--else为可选END CASE;
实例:
DECLARE v_age mytest.age%TYPE;BEGIN SELECT age INTO v_age FROM mytest WHERE id = 1; CASE v_age < 18 WHEN TRUE THEN DBMS_OUTPUT.PUT_LINE('未成年人'); ELSE DBMS_OUTPUT.PUT_LINE('成年人'); END CASE;EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('抛出异常');END;
格式二:
CASE WHEN 表达式1 THEN 语段1 WHEN 表达式2 THEN 语段2 ... [ELSE 语句段]--可选END CASE;实例:
DECLARE v_age mytest.age%TYPE;BEGIN SELECT age INTO v_age FROM mytest WHERE id = 1; CASE WHEN v_age < 18 THEN DBMS_OUTPUT.PUT_LINE('未成年'); WHEN v_age >=18 AND v_age <= 60 THEN DBMS_OUTPUT.PUT_LINE('中年人'); ELSE DBMS_OUTPUT.PUT_LINE('老年人'); END CASE;--case语句结束EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('年龄分段开个玩笑异常了');END;--整个块语句结束
3.3循环
1.简单循环
语法:
LOOP 执行目标语句; EXIT WHEN <判断条件>;--当不满足条件时,退出循环END LOOP;--结束循环
实例:
DECLARE v_count NUMBER(2):=0;BEGIN LOOP v_count := v_count+1; DBMS_OUTPUT.PUT_LINE(v_count); EXIT WHEN v_count = 5; END LOOP;END;
2.while循环
语法:
WHILE 布尔表达式 LOOP--满足条件进入循环 执行目标语句;END LOOP;--结束循环
实例:
DECLARE v_count NUMBER(2):=1;BEGIN WHILE v_count<6 LOOP DBMS_OUTPUT.PUT_LINE('循环次数为:'||v_count); v_count := v_count+1; END LOOP;END;
3.数字循环
语法:
FOR 循环计数器 IN [REVERSE] 上限..下限 LOOP 执行目标语句;END LOOP;--不加reverse,循环变量自动加1,使用reverse循环变量自动减1.--上限,下限必须是整数,可以用exit退出循环
实例:
DECLARE v_count NUMBER(2):= 5;BEGIN FOR INT IN 1..v_count LOOP--在in后面加上reverse能看到不同的效果 DBMS_OUTPUT.PUT_LINE(INT); END LOOP;END;
3.4标号和GOTO语句
无条件跳转到指定的标号去,语法:
GOTO LABEL;......<<LABEL>>;--标号是用<<>>括起来的标识符
实例:
DECLARE v_age mytest.age%TYPE := 19;BEGIN IF v_age < 18 THEN GOTO firstGoto; ELSE GOTO lastGoto; END IF; <<firstGoto>> DBMS_OUTPUT.PUT_LINE('跳转到第一个goto'); <<lastGoto>> DBMS_OUTPUT.PUT_LINE('跳转到第二个goto');END;注意,GOTO不能进行以下跳转:
不能跳转到循环,条件语句中;
不能从异常处理部分在跳回转执行部分,逻辑乱套;
不能跳转到字块中;
不能从条件语句的一部分跳转到另一部分,违反条件语句的执行逻辑;
3.5NUL语句
NULL语句使用范围很广,包括查询判断,条件判断,计算等。
0 0
- PL/SQL之流程控制语句
- PL/SQL之三- 流程控制语句
- ORACLE PL/SQL编程之PL/SQL 流程控制语句
- PL/SQL流程控制语句
- PL/SQL流程控制语句
- Oracle数据库之PL/SQL流程控制语句
- ORACLE PL/SQL编程详解之三:PL/SQL流程控制语句(不给规则,不成方圆)
- ORACLE PL/SQL编程详解之三:PL/SQL流程控制语句
- ORACLE PL/SQL编程之三:PL/SQL流程控制语句
- ORACLE PL/SQL编程详解之三:PL/SQL流程控制语句
- ORACLE PL/SQL编程详解之三:PL/SQL流程控制语句(不给规则,不成方圆)
- Oracle PL/SQL编程详解之三: PL/SQL流程控制语句
- 第三章 PL/SQL流程控制语句
- 1.3、PL/SQL流程控制语句
- PL/SQL流程控制语句说明
- PL/SQL程序设计 第三章 PL/SQL流程控制语句
- PL/SQL程序设计 第三章 PL/SQL流程控制语句
- PL/SQL流程控制语句------if语句例子
- 一个很简单的聊天室
- MySQL知识(十七)——视图
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- 原型链
- IP Address
- PL/SQL之流程控制语句
- 【CI学习笔记】CI显示数据库数据的实例
- PropertyPlaceholderConfigurer实例
- Remove Duplicates from Sorted Array
- 继承HorizonScollView的侧滑菜单实现
- IceDemos:环境搭建和HelloWorld
- [maya学习笔记(14)] 桥接 软选择
- 面向对象程序设计——理解对象
- socket、tcp、udp、http 的认识及区别