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. UVA 10881

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

  2. D. Magic Box(几何)

    One day Vasya was going home when he saw a box lying on the road. The box can be represented as a re ...

  3. jquery遍历-filter()

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

  4. 一个简单的HTML病毒分析

    一直就想写这篇东西了,仅仅是上班时说要上班,不写.回家后又忙着玩游戏,丢一边去了.如今仅仅好不务正业的开写了.希望头儿不会知道我的blog.哈哈 在非常久之前就对HTML的病毒非常感兴趣了,非常好奇怎 ...

  5. CodeForces - 396C On Changing Tree(树状数组)

    题目大意 给定一棵以1为根的树,初始时所有点为0 给出树的方式是从节点2开始给出每一个点的父亲 然后是 $m$ 次操作,分为两种 $1 v,k,x$ 表示在以v为根的子树中的每一个点上添加 $x-i* ...

  6. linux 安全配置随笔

    1. 禁止Ctrl+Alt+Del直接重启服务器 /bin/mv /etc/init/control-alt-delete.conf /etc/init/control-alt-delete.conf ...

  7. native2ascii -- 编码转化工具

    参考文档 http://blog.chinaunix.net/uid-692788-id-2681133.html 功能说明 Java 编译器和其它 Java 工具只能处理含有 Latin-1 和/或 ...

  8. fdisk命令总结

    fdisk - Partition table manipulator for Linux 一.通过fdisk -l 查看机器所挂硬盘个数及分区情况: fdisk 能划分磁盘成为若干个区,同时也能为每 ...

  9. 干掉Vivado幺蛾子(2)-- 快速替换debug probes

    目录 1. 什么是ECO 2. 操作步骤 参考文献: 我们做项目,进入找bug阶段时,需要用ILA捕获相关的信号.之前我做项目,每改动一次探针(debug probes),都要重新综合.实现,通常要花 ...

  10. JQuery.Validate学习笔记

    JQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求.该插件捆绑了一套有用的验证方法,包括 URL 和电子邮件验证 ...