1、选择控制语句

--语法1--
IF 条件 THEN
语句;
END IF; DECLARE
v_Salary NUMBER(8,2);
BEGIN
SELECT salary
INTO v_Salary
FROM auths
WHERE name='张三';
IF v_Salary IS NOT NULL THEN
DBMS_OUTPUT.PUT_LINE(v_Salary);
END IF;
END;

--语法2--
IF 条件 THEN
语句1;
ELSE
语句2;
END IF; DECLARE
v_Salary NUMBER(8,2);
BEGIN
SELECT salary
INTO v_Salary
FROM auths
WHERE name='张三';
IF v_Salary IS NOT NULL THEN
DBMS_OUTPUT.PUT_LINE(v_Salary);
ELSE
DBMS_OUTPUT.PUT_LINE('工资未定');
END IF;
END;

--语法3--
IF 条件1 THEN
语句1;
ELSIF 条件2 THEN
语句2;
[ELSE
语句3;]
END IF; DECLARE
v_Salary NUMBER(8,2);
v_Comment VARCHAR2(40);
BEGIN
SELECT salary
INTO v_Salary
FROM auths
WHERE name='张三';
IF v_Salary = 120 THEN
v_Comment:='最低工资';
ELSIF(v_Salary > 120) AND (v_Salary <= 300) THEN
v_Comment:='低工资';
ELSE
v_Comment:='普通工资';
END IF;
END;

2、循环控制语句

--语法1--
LOOP
语句;
END LOOP; DECLARE
v_name VARCHAR2(10);
v_num INTEGER:=1;
BEGIN
LOOP
SELECT name
INTO v_name
FROM auths
WHERE author_code='A0000'||TO_CHAR(v_num);
v_num:=v_num+1;
IF v_num>=10 THEN
EXIT;
END IF;
END LOOP;
END; ||为oracle中的字符串连接符;
EXIT语句可在LOOP语句中出现多次,但不可以在LOOP语句外使用; DECLARE
v_name VARCHAR2(10);
v_num INTEGER:=1;
BEGIN
LOOP
SELECT name
INTO v_name
FROM auths
WHERE author_code='A0000'||TO_CHAR(v_num);
v_num:=v_num+1;
EXIT WHEN v_num>=10;
END LOOP;
END;

--语法2--
<<标号名>>
LOOP
语句;
END LOOP[标号名]; 标号指用"<<"和">>"括起来的标识符,必须放在LOOP语句的开始,结尾可选放。
在嵌套的LOOP循环中,带标号的循环可以提高程序的可读性。同时,使用EXIT语句不仅可以终止当前的循环,还可以终止任意带标号的循环语句。 DECLARE
...
BEGIN
<<first_loop>>
LOOP
LOOP
...
EXIT first_loop WHEN ...;
END LOOP;
END LOOP first_loop;
END;

--语法3--
WHILE 条件 LOOP
语句;
END LOOP; DECLARE
v_name VARCHAR2(10);
v_num INTEGER:=1;
BEGIN
WHILE v_num<10 LOOP
SELECT name
INTO v_name
FROM auths
WHERE author_code='A0000'||TO_CHAR(v_num);
v_num:=v_num+1;
END LOOP;
END;

--语法4--
FOR 循环变量 IN [REVERSE] 初始值..结束值 LOOP
语句;
END LOOP; DECLARE
v_name VARCHAR2(10);
BEGIN
FOR v_num IN 1..9 LOOP
SELECT name
INTO v_name
FROM auths
WHERE author_code='A0000'||TO_CHAR(v_num);
DBMS_OUTPUT.PUT_LINE(v_name);
END LOOP;
END; DECLARE
v_name VARCHAR2(10);
v_count NUMBER;
BEGIN
SELECT COUNT(name)
INTO v_count
FROM auths
FOR v_num IN 1..v_count LOOP
SELECT name
INTO v_name
FROM auths
WHERE author_code='A0000'||TO_CHAR(v_num);
DBMS_OUTPUT.PUT_LINE(v_name);
END LOOP;
END; 可以引用循环变量;
循环变量的初始值和结束值可以是数据、变量或表达式,但值必须是整数;
允许在执行时动态的指定循环变量的初始值和结束值;
循环变量仅在循环语句中有效,当退出循环时,循环变量无效;
因为循环变量被隐式地定义为局部变量,所有任何同名的全局变量都将被改变量覆盖,如果要引用全局变量,则必须使用标号和点好;
如果在嵌套的循环语句中,内层和外层的循环变量名相同,这时,要在内部循环中使用外部循环的循环变量,必须使用标号和点好;

3、顺序控制语句

GOTO语句是非结构化语句;
NULL语句能够使条件语句的意义更加清晰,并且能够提高程序的可读性;

PL/SQL之流控制语句的更多相关文章

  1. Oracle中PL/SQL的循环语句

    在PL/SQL中可以使用LOOP语句对数据进行循环处理,利用该语句可以循环执行指定的语句序列.常用的LOOP循环语句包含3种形式:基本的LOOP.WHILE...LOOP和FOR...LOOP. LO ...

  2. oracle PL/SQL管理命令语句

    一.ORACLE的启动和关闭 1.在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a.启动ORACLE系统 oracle>svrmgrl ...

  3. PL/SQL编程重点语句输出整理

    create or replace procedure pr_mytest is v_test number() :=; v_char varchar2():='数据库'; c_changl cons ...

  4. pl/sql中if语句的使用

  5. PL/SQL批处理语句(BULK COLLECT子句和FORALL语句)

    Oracle为PL/SQL中的SQL相关功能提供了FORALL语句和BULK COLLECT子句,显著的增强了SQL相关功能.这两个语句一起被称作PL/SQL的批处理语句.Oracle为什么要提供这两 ...

  6. Oracle之PL/SQL学习笔记

    自己在学习Oracle是做的笔记及实验代码记录,内容挺全的,也挺详细,发篇博文分享给需要的朋友,共有1w多字的学习笔记吧.是以前做的,一直在压箱底,今天拿出来整理了一下,给大家分享,有不足之处还望大家 ...

  7. PL/SQL流程控制语句

    PL/SQL流程控制语句介绍PL/SQL的流程控制语句, 包括如下三类:控制语句: IF 语句循环语句: LOOP语句, EXIT语句顺序语句: GOTO语句, NULL语句①if语句 IF < ...

  8. Oracle PL/SQL入门语法点

    PL_SQL:带有分支和循环,面向过程匿名块:declare(可选,声明各种变量和游标的地方)begin(必要的,从此开始执行)exception(抓取到异常后执行的)end;[sql] view p ...

  9. ORACLE PL/SQL编程详解

    ORACLE PL/SQL编程详解 编程详解 SQL语言只是访问.操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发.PL /SQL是一种高级数据库程序设 ...

随机推荐

  1. Spring各个jar包详解

    Spring各jar包详解 spring.jar 是包含有完整发布模块的单个jar 包.但是不包括mock.jar,aspects.jar, spring-portlet.jar, and sprin ...

  2. Windows上编译libjpeg

    通常libjpeg可以使用如下命令行生成Visual Studio 2010的项目文件: nmake /f makefile.vc setup-v10 但可惜我们使用的是Visual Studio 2 ...

  3. UVA 10881

    题目就不再写了,直接开始 [分析]蚂蚁碰撞掉头,其实不用考虑掉头问题,直接让“掉头”等价于“对穿而过”, 然后调换它们的状态(感觉像是障眼法hhh),只要分清楚“谁是谁”.因为“掉头”,所以蚂蚁 的相 ...

  4. pos机代理行业

        传统模式(代理):代理商线性分润,代理商或营运商给一代大量的机器及要求,而且这个要求公对公结算(必须要有公司),分润也是直接给一代.然后一代找二代推广,层层发展.这样你会很担心你的上家的上家突 ...

  5. 24. 两两交换链表中的节点 leetcode

    题目: 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表. 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 示例: 给定 1->2->3->4, 你应该返回 ...

  6. 《锋利的jQuery 第二版》chapter 1~

    chapter 1 认识 jQuery jquery.js(开发版),jquery.min.js(生产版) window.onload 与 $(document).ready() 的对比: jquer ...

  7. linux命令之磁盘与文件系统管理命令(上)

    1.fdisk:磁盘分区工具 该命令是linux下常用的磁盘分区工具,但是只能给小于2TB的磁盘划分分区. 常用参数为-l,显示所有磁盘分区的信息. 示例: 1)显示磁盘分区列表 [root@boxi ...

  8. [Maven实战-许晓斌]-[第二章]-2.3安装目录分析

    bin boot conf settings.xml非常重要 这个是maven安装包自带的settings.xml 通常我们会放在习惯路径,C:\Users\admin\.m2\下面 即  用户路径\ ...

  9. PHP内核研究:HASH表和变量 【转】

    PHP HASH表 在PHP中,所有的数据 无论变量,常量,类,属性 都用Hash表来实现. 先要说说 HASH表 typedef struct bucket { ulong h;           ...

  10. 提高 iOS App 通知功能启用率的三个策略

    我们都知道推送通知在 App 运营中的作用巨大.但是,很多用户却并不买帐,App 第一次启动提示是否「启用推送通知」时,他们直接选择了「否」. 是的,最近我本人就转变成了这样的人 - 认真地评估每个应 ...