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. C# Log4.Net日志组件的应用系列(一)

    引言 Log4Net应该可以说是.NET中最流行的开源日志组件了.在各种项目框架中可以说是必不可少的组成部分.个人认为Log4Net有下面几个优点: 1. 使用灵活,它可以将日志分不同的等级,以不同的 ...

  2. luoguP4513 小白逛公园

    https://www.luogu.org/problemnew/show/P4513 题意是给你一个序列,计算一个区间内的最大字段和,支持单点修改 线段树维护左起最大字段和,右起最大字段和,区间和和 ...

  3. AHOI2005航线规划 bzoj1969(LCT缩点)

    题目描述 对Samuel星球的探险已经取得了非常巨大的成就,于是科学家们将目光投向了Samuel星球所在的星系——一个巨大的由千百万星球构成的Samuel星系. 星际空间站的Samuel II巨型计算 ...

  4. Heap堆

    #pragma once#include<iostream>using namespace std;#include<vector> template<class T&g ...

  5. 集成 jpush-react-native 常见问题汇总 (iOS 篇)

    给 iOS 应用添加推送功能是一件比较麻烦的事情,本篇文章收集了集成 jpush-react-native 的常见问题,目的是为了帮助用户更好地排查问题 1. 收不到推送 确保是在真机上测试,而不是在 ...

  6. P1642 规划 01分数规划+树形DP

    $ \color{#0066ff}{ 题目描述 }$ 某地方有N个工厂,有N-1条路连接它们,且它们两两都可达.每个工厂都有一个产量值和一个污染值.现在工厂要进行规划,拆除其中的M个工厂,使得剩下的工 ...

  7. MPMoviePlayerViewController不能播放本地mp4的解决办法.

    之前一直用MPMoviePlayerViewController进行网络播放,最近下载文件然后本地播放,发现怎么播放都是黑屏.后来发现MPMoviePlayerViewController的本地URL ...

  8. oracle安装注意

    安装环境:widows7相关教程:https://jingyan.baidu.com/article/4d58d5411e16de9dd4e9c0ec.html oracle安装情况:标准版2.8Go ...

  9. wordcloud词云--可视化

    import jieba import wordcloud f = open("新时代中国特色社会主义.txt", "r", encoding="gb ...

  10. 1016 部分A+B (15 分)

    // 题目不难,感觉变量定义的有点儿多了#include <iostream> #include <cmath> using namespace std; int main() ...