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. 安装npm及cnpm

    一.安装npm 1. 使用npm首先需要下载node.js 进入nodejs官网nodejs下载,如下图 : 选择适合自己的系统,我这里使用的是window10 64bit 2. 开始安装 **选好需 ...

  2. zabbix前端添加平台脚本监控

    1.在前端创建脚本 2.添加监控配置 # 这里添加的监控为ping命令,用来探测网络的可用性. # 这里添加的监控为traceroute命令,用来探测网络的可用性. # 这里添加的监控为nmap命令, ...

  3. js计算机样式window.getComputedStyle(ele,null)2

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. spring 为什么可以一统江湖

    spring 为什么可以一统江湖 Inversion of Contro 简称IOC 是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度.也就是面向接口编程的思想. 简单的说就是使用配 ...

  5. NSCharacter​Set 关于字符串编码

    此文转自:http://nshipster.cn/nscharacterset/ 只为个人为了查找问题方便才复制过来的....... 正如之前提前过的,基础类库(Foundation)拥有最好的.功能 ...

  6. LINQ -2015-04-27

    LINQ--language-integrated-query 1.它和sql语言区别呢? SQL语言常用在ralational-database中,而LINQ对内存数据,数据库,xml文件等多种形式 ...

  7. Hacking Lambda Expressions in Java

    Hacking Lambda Expressions in Javahttps://dzone.com/articles/hacking-lambda-expressions-in-java At t ...

  8. sublime text3 license & nodejs setting

    ----- BEGIN LICENSE ----- sgbteam Single User License EA7E-1153259 8891CBB9 F1513E4F 1A3405C1 A865D5 ...

  9. PIE_SDK.NET功能表

  10. Java Web基础——Controller+Service +Dao三层的功能划分

    转自:https://www.cnblogs.com/cielosun/articles/5752272.html 1. Controller/Service/DAO简介: Controller是管理 ...