`

转载:Oracle PL/SQL之LOOP循环控制语句

 
阅读更多

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

    LOOP语句的基本语法结构如下:

 

[<<label_name>>]LOOP statement...END LOOP [label_name] 【语法说明】<<label_name>>LOOP结构的标签,是可选项。LOOPLOOP循环开始标志。statementLOOP语句中循环执行的语句序列。END LOOPLOOP循环结束标志,可以添加LOOP结构的标签。

1.基本的LOOP语句
    实例:要求声明变量,每次循环都需要为变量增加数字1,并输出结果。当变量值大于3时,退出循环操作。

    a、利用EXIT...WHEN结束循环操作。

SQL> set serveroutput on;

SQL> --exit when

SQL> declare  

2    v_rlt number(8):=-3;  

3  begin  

4     <<fst_loop>>  

5     loop  

6       dbms_output.put_line('v_rlt = '||v_rlt);  

7       v_rlt:=v_rlt+1;  

8       exit fst_loop when v_rlt > 3;  

9     end loop; 

10       dbms_output.put_line('LOOP循环已经结束!'); 

11  end; 

12   / v_rlt = -3v_rlt = -2v_rlt = -1v_rlt = 0v_rlt = 1v_rlt = 2v_rlt = 3LOOP循环已经结束! PL/SQL procedure successfully completed

    b、利用IF...EXIT语句结束循环

SQL> --if exit

SQL> declare  

2    v_rlt number(8):=-3;  

3  begin  

4     <<fst_loop>>  

5     loop  

6       dbms_output.put_line('v_rlt = '||v_rlt);  

7       v_rlt:=v_rlt+1;  

8       if v_rlt > 3 then  

9        dbms_output.put_line('变量的值已经大于3,当前值为'||v_rlt); 

10        exit fst_loop; 

11       end if; 

12     end loop fst_loop; 

13       dbms_output.put_line('LOOP循环已经结束!'); 

14  end; 

15  / v_rlt = -3v_rlt = -2v_rlt = -1v_rlt = 0v_rlt = 1v_rlt = 2v_rlt = 3变量的值已经大于3,当前值为4LOOP循环已经结束! PL/SQL procedure successfully completed

2WHILE...LOOP结构
    WHILE...LOOP结构和基本的LOOP语句不同,它本身可以结束LOOP循环。WHILE关键词后面需要有布尔表达式,当WHILE后面的布尔表达式为TRUE时,则循环体重的语句序列被执行1次,然后会重新判断WHILE后面的表达式是否为TRUE,只有当WHILE后的布尔表达式为FALSE时,才结束整个LOOP循环。

    该语句结构的相关语法如下:

[<<label_name>>]WHILE boolean_expressionLOOPstatement...END LOOP [label_name];【语法说明】boolean_expression:布尔表达式。statement:语句序列,当boolean_expressionTRUE时,该语句序列可获得执行权。

    cWHILE...LOOP结构

SQL> --while...loop

SQL> declare  

2    v_rlt number(8):=-3;  

3  begin  

4     <<while_loop>>  

5     while(v_rlt < 4)  

6     loop  

7       dbms_output.put_line('v_rlt = '||v_rlt);  

8       v_rlt:=v_rlt+1;  

9     end loop while_loop; 

10       dbms_output.put_line('WHILE循环已经结束!'); 

11  end; 

12   

13  / v_rlt = -3v_rlt = -2v_rlt = -1v_rlt = 0v_rlt = 1v_rlt = 2v_rlt = 3WHILE循环已经结束! PL/SQL procedure successfully completed

3.FOR...LOOP结构
    FOR...LOOP语句可以遍历某个范围的整数,该范围被FORLOOP关键词封闭。首次进入循环时,循环范围将被确定,并且以后不会再次计算。每循环一次,循环指数将会自动增加1

    FOR...LOOP语句的语法结构如下:

[<<label_name>>]FOR index_name IN[ REVERSE ]lower_bound .. upper_boundLOOPstatement...END LOOP [label_name];【语法说明】index_name:循环计数器,是一个变量,它可以得到当前的循环指数。需要注意的是,不能为其手工赋值。REVERSE:可选项,指定循环方式。默认的循环方式由下标(lower_bound)到上标(upper_bound)。使用该选项则从上标界到下标界。lower_bound:循环范围的下标界。upper_bound:循环范围的上标界。下标和上标之间的".."不能省略。

    dFOR...LOOP结构

SQL> --for..loop

SQL> begin  

2     for v_rlt in -3..3 loop  

3       dbms_output.put_line('v_rlt = '||v_rlt);  

4     end loop;  

5       dbms_output.put_line('FOR循环已经结束!');  

6  end;  

7  / v_rlt = -3v_rlt = -2v_rlt = -1v_rlt = 0v_rlt = 1v_rlt = 2v_rlt = 3FOR循环已经结束! PL/SQL procedure successfully completed

 

<!--EndFragment-->

 

分享到:
评论

相关推荐

    PL/SQL Developer8.04官网程序_keygen_汉化

    PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL ...

    PL/SQL 基础.doc

    ---- 第四章 PL/SQL控制语句 ---- 1. 条件语句 IF boolean_expression1(条件1) THEN ... ELSIF boolean_expression2(条件2) THEN /*注意是ELSIF,而不是ELSEIF*/ ... /*ELSE语句(ELSIF)不是必须的,但END IF...

    C# 访问Oracle示例+PL/SQL+存储过程+触发器 完整示例 测试可用 易懂

    C# 访问Oracle示例+PL/SQL+存储过程+触发器 完整示例 测试可用 --PL/SQL基础1 declare begin dbms_output.('不输出不换行'); dbms_output.put_line('输出并换行'); end; --PL/SQL基础2 declare dig number(20,...

    PLSQL语言

    对于学习Oracle非常有帮助

    ORACLE SQL PLSQL

    3.条件,循环语句,包括if---else,3 个loop循环(简单loop,for...loop,while...loop)。 4.完整的异常处理机制。 5.命名的,可重用的代码,如包,函数,过程,触发器,对象类型等。 6.plsql是sql的有力补充,与sql...

    PLSQLDeveloper下载

    PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL ...

    Oracle数据库SQL基本应用与介绍

    Oracle不仅可以通过基本的sql进行简单的数据操作,还可使用对标准sql进行了扩展的PL/SQL语言,可使用如IF…THEN…、WHILE、LOOP等同结构化程序语言一样的构造制作程序,还有制作函数、过程、触发器等也用PL/SQL语言...

    oracle数据库11G初学者指南.Oracle.Database.11g,.A.Beginner's.Guide

    5.6.4 Loop循环 5.6.5 WHILE循环 5.6.6 FOR循环 5.7 如何创建存储过程以及创建存储过程的原因 5.8 函数的创建和使用 5.9 调用PL/SQL程序 5.10 本章 测验 第6章 数据库管理员 6.1 了解DBA的工作 6.2 执行日常操作 ...

    oracle实验报告

    PL/SQL块中的可执行部分是由一系列语句组成的(包括对数据库进行操作的SQL语句,PL/SQL语言的各种流程控制语句等)。在块中对数据库查询,增、删、改等对数据的操作是由SQL命令完成的。在PL/SQL块中,可以使用SQL的...

    Oracle Database 11g初学者指南--详细书签版

    5.6.4 Loop循环 142 5.6.5 WHILE循环 143 5.6.6 FOR循环 143 5.7 如何创建存储过程以及创建存储过程的原因 146 5.8 函数的创建和使用 149 5.9 调用PL/SQL程序 151 5.10 本章测验 152 第6章 数据库管理员 153 ...

    LECCO SQL Expert (智能自动SQL优化)

    图1 人工智能自动SQL优化示意图 其核心模块之一“SQL语法优化器”的工作原理大致如下(如图1): 一条源SQL语句输入→“人工智能反馈式搜索引擎”对输入的SQL语句结合检测到的数据库结构和索引进行重写,产生N条等效...

    Oracle8i_9i数据库基础

    §11.2.2 PL/SQL 可用的SQL语句 233 §11.3 运行PL/SQL程序 233 §11.4 PL/SQL内置包 234 第十二章PL/SQL 块结构和组成元素 235 §12.1 PL/SQL结构 235 §12.2 PL/SQL块 236 §12.3 标识符 236 §12.4 PL/SQL 变量...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。  拉里•埃里森  就业前景 从就业与择业的...

    Oracle数据库使用及命名规则的详解

    本注释说明主要用于PL/SQL程序及其它SQL文件,其它可作参考;  2. SQLPLUS接受的注释有三种:  ―― 这儿是注释  /* 这儿是注释 */  REM 这儿是注释  3. 开始注释,类似JAVAK中的开始注释,主要...

    Oracle存储过程中自定义异常

    进入pl/sql测试窗口  2.执行语句  declare  empname varchar2(255);  customize_exp EXCEPTION; –自定义异常  begin  FOR c IN (select d.* from scott.dept d) LOOP  begin  dbms_output.put_...

    Oracle事例

    字符串字段中含有\"\'\",如果用来组合sql语句,会造成语句不准确。 比如:replace(f1,\'\'\'\',\'\') &lt;2&gt;.字符串字段中含有\"\\t \\n\",如果用来在c或者c++程序中输出到文件,格式无法保证。 比如:replace(f2,...

    精髓Oralcle讲课笔记

    -- 首先,以超级管理员的身份登录oracle sqlplus sys/bjsxt as sysdba --然后,解除对scott用户的锁 alter user scott account unlock; --那么这个用户名就能使用了。 --(默认全局数据库名orcl) 1、...

Global site tag (gtag.js) - Google Analytics