PL/SQL中的流控制语句

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语句能够使条件语句的意义更加清晰,并且能够提高程序的可读性;
时间: 2024-09-30 05:52:10

PL/SQL中的流控制语句的相关文章

PL/SQL中LOOP循环控制语句

在PL/SQL中可以使用LOOP语句对数据进行循环处理,利用该语句可以循环执行指定的语句序列.常用的LOOP循环语句包含3种形式:基本的LOOP.WHILE...LOOP和FOR...LOOP. LOOP语句的基本语法结构如下: [<<label_name>>] LOOP statement... END LOOP [label_name] [语法说明] <<label_name>>:LOOP结构的标签,是可选项. LOOP:LOOP循环开始标志. stat

PL/SQL(五)PL/SQL中动态执行SQL语句

在PL/SQL程序开发中,可以使用DML语句和事务控制语句,但是还有很多语句(比如DDL语句)不能直接在PL/SQL中执行.这些语句可以使用动态SQL来实现. PL/SQL块先编译然后再执行,动态SQL语句在编译时不能确定,只有在程序执行时把SQL语句作为字符串的形式由动态SQL命令来执行.在编译阶段SQL语句作为字符串存在,程序不会对字符串中的内容进行编译,在运行阶段再对字符串中的SQL语句进行编译和执行,动态SQL的语法是: 语法格式:动态SQL EXECUTE IMMEDIATE 动态语句

ORACLE PL/SQL 中序列(sequence)的简易使用方法介绍

如果我是C罗 原文 ORACLE PL/SQL 中序列(sequence)的简易使用方法介绍 sequence在ORACLE中应用十分广泛,就是序列号的意思,会自动增加指定变数,如逐次增加1或者2或者其他. 1.创建序列 Create Sequence 你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE 权限 CREATE SEQUENCE CUX_DEMO_SEQUENCEMINVALUE 1MAXVALUE 99999999999START WITH 1000

ORACLE PL/SQL 实例精解之第三章 PL/SQL中的SQL

3.1 在PL/SQL中使用DML 在PL/SQL语块中,两种变量赋值a. := 初始化.b. select into语法,PL/SQL语块的声明部分被声明的变量,后期可以使用选择语句进行赋值. 3.1.1变量初始化时使用select into语法 select A INTO V_A INSERT INTO xxx(表)( XA)values (V_A) 3.1.2 在pl/sql语句块中使用DML a.使用oracle序列 CURR b.获取和递增序列值 CURRVAL 返回序列的当前值 NE

PL/SQL中如何让程序每隔几秒插入一条数据

在编写ORACLE PL/SQL中,如果需要程序执行中暂停几秒钟再继续执行,可以通过oracle内置的dbms_lock.sleep来实现,不过dbms_lock包需要用户自己安装. [[email protected] ~]# su - oracle [[email protected] ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Mon May 25 16:36:12 2015 Copyright (c

PL/SQL中的游标

游标 :是一个指向上下文的句柄( handle)或指针.通过游标,PL/SQL可以控制上下文区和处理语句时上下文区会发生些什么事情. 定义游标:就是定义一个游标名,以及与其相对应的SELECT 语句 ,     其    一般形式为:   CURSOR cursor_name IS  select_statement; 打开游标:就是执行游标所对应的SELECT 语句,将其查询结果放入工作区,并且指针指向工作区的首部,标识游标结果集合.OPEN cursor_name: 提取游标:就是检索结果集

PL/SQL中SELECT总结

一.SELECT 语句的各个关键词的顺序及作用简解(这个我简略点写~) 1.SELECT 2.FROM 3.WHERE 4.GROUP BY ---对结果集进行分组,通常与聚合函数一起使用 5.HAVING 6.ORDER BY 举个例子如下: select item_name,count(item_name) from lab_item_dict where price='25' group by item_name having count(item_name)>1 order by cou

PL/SQL程序控制结构及在PL/SQL中更改数据和管理事务

1.条件控制 A. IF条件分支语法: if (条件1) then 语句; elsif (条件2) then 语句; elsif (条件3) then 语句; else 语句; end if; B . case条件分支:等值比较.条件比较.case表达式 a.等值比较语法: CASE  条件判断 WHEN      条件值的表达式    THEN       要执行的条件操作     ; ……. [ELSE   ……..] END   CASE; b. 条件比较语法: CASE WHEN   不

PL/Sql 中创建、调试、调用存储过程

存储过程  所用函数说明  功能:求和与差  原形:GetSumAndSub(p1 in number , p2 in number ,m out number , b out number)   参数:m=p1+p2 b=p1-p2  1.先建存储过程 左边的浏览窗口选择 procedures ,会列出所有的存储过程,右击文件夹procedures单击菜单"new",弹出  template wizard窗口, name框中输入 GetSumAndSub ,parameters中填入