PL/SQL的for循环语句

操作方法

  • 01

    PL/SQL中有两种类型的FOR循环:数字型FOR循环和游标型FOR循环。数值型FOR循环式传统的大家熟悉的“计数”循环,这种FOR循环的迭代次数在循环开始的时候就知道了。如果在FOR循环的范围处没有设置循环索引的递进方向从低到高或者从高到低(reverse将范围条件置反)。语法如下: FOR loopIndex    IN [REVERSE] lowest_number..heighest_number LOOP . . . 可以执行的语句 END LOOP; 使用这种循环的原因: 如果只想有限次的执行一段代码,又不想过早的结束循环,就可以使用数值型的FOR循环。 【如】输出从satrtIndex开始到endIndex的数字 PROCEDURE display_number( startIndex    IN    INTEGER, endIndex     IN    INTEGER )AS BEGIN FOR currentIndex IN startIndex.. endIndex LOOP DBMS_OUTPUT.PUT_LINE(currentIndex ); END LOOP; END; FOR info IN (SELECT * FROM student) LOOP . . . info.C_NAME END LOOP; 使用数字型FOR循环的规则: a、不要声明循环索引,PL/SQL会自动、隐式的用一个INTEGER类型的局部变量作为循环索引。作用范围就是该循环本省,不能在循环之外使用 b、在范围部分使用的表达式会在循环开始时被求值一次。范围部分不会随着循环的反复执行而被重复求值,如果在循环体内部改变范围表达式使用的变量,这种改变对范围边界没有任何作用 c、在循环体内部不要改变索引值或者范围边界值。 d、使用reverse关键字可以迫使循环从上边界到下边界递减进行,但是你必须保证上边界大于下边界 处理非平滑增长: PL/SQL并没有提供可以指定特殊的累进步幅得“进步”语法。在PL/SQL中数值型的FOR循环的各种变体中,递进步幅总是为1为单位进步。如果让循环只有当遇到1到100之间的偶数时才执行?你可以使用MOD函数。如: FOR loop_index IN 1..100 LOOP IF MOD (loop_index, 2) = 0 THEN calc_values(loop_index); END IF; END LOOP; 或者 FOR loop_index IN 1..50 LOOP calc_values(loop_index*2); END LOOP; 游标型FOR循环: 游标型FOR循环是和一个现实游标或者直接放在循环边界中的SELECT语句关联在一起的循环。如果你需要取出游标的每条记录依次处理,就可以使用游标FOR循环,而这种也是游标的主要用法。语法如下: FOR record IN {cursor_name | select statement} LOOP executable statements END LOOP; 其中record是一个记录,这个记录是PL/SQL根据cursor_name这个游标%ROWTYPE属性隐式声明出来的。注意:不要现实的声明一个与循环索引(record)同名的记录,会导致逻辑错误。直接在循环中嵌套SELECT语句。 FOR student IN (SELECT * FROM students) LOOP DBMS_OUTPUT.PUT_LINE( student.N_USERNAME ); END LOOP; 然而,应该避免使用这种方式,因为SELECT出现在了不该出现的地方,维护难以理解。 如:我们将更新所有员工的薪水。 方式一: DECLARE CURSOR student_cursor IS SELECT id, name, salaray FROM employers; student    student_cursor%ROWTYPE; BEGIN OPEN student_cursor; LOOP FETCH student_cursor INTO student; EXIT WHEN student_cursor%NOTFOUND; UPDATE students SET salary= student .salary*0.3 WHERE id=student.id; END LOOP; CLOSE student_cursor; END; 方式二: DECLARE CURSOR student_cursor IS SELECT id, name, salaray FROM employers; BEGIN LOOP student IN student_cursor UPDATE students SET salary= student .salary*0.3 WHERE id=student.id; END LOOP; END;

(0)

相关推荐

  • PL/SQL Developer中SQL语句如何格式化

    一般情况下,我们写出来的SQL语句都不会很短. 在PL/SQL Developer 中,有时在SQL窗口中写的代码过长,不容易被看懂,而Developer为我们提供了代码格式化的功能,让我们能清晰的看 ...

  • Orcale 数据库客户端PL/SQL中文乱码的问题

    在进行oracle存储过程的编写过程中,当写中文语句的时候,对存储过程进行编译成功后,再重新打开这个文档,发现中文出现了乱码.这真是件麻烦事情.其实解决乱码的问题很简单,需要我们的PL/SQL Ora ...

  • 如何使用PL/SQL工具批量导出表、存储过程、序列

    PLSQL作为Oracle数据库进行操作常用工具,可以很方便的对表以及数据进行处理.工作中如果遇到数据库转移,需要将老数据库中的建表.建序列和存储过程语句导出,然后导入到新的数据库中这样序列号会自动, ...

  • PL/SQL中如何导出表结构和表数据

    在数据库操作中,很多时候会发现数据库不兼容,但原来的数据库中又有很多数据,表结构也很复杂,这时候就会想到将这个表中的数据和表结构都移植到另一个数据库中,在PL/SQL的工具栏中,可以进行数据库表移植和 ...

  • PL/SQL Developer如何修改表数据

    下面介绍一下orcale客户端PL/SQL Developer修改表中的数据,添加.删除.修改记录. 操作方法 01 登录PL/SQL Developer 02 找到要修改数据的表,右击该表,选择&q ...

  • PL/SQL developer如何创建表

    PL/SQL developer是Orcale数据库客户端,功能非常强大,今天介绍一下如何用它创建表. 操作方法 01 首先登录PL/SQL developer. 02 点击工具栏中的第一个图标,选择 ...

  • 如何使用PL/SQL将sql脚本数据导入数据库

    使用Oracle对数据库操作时,PL/SQL是使用比较多的数据库工具类.工作中经常需要对数据库查询出来导入到另外一个数据库.数据库的导入和导出是工作中的基本数据库技能,本文介绍 如何通过sql数据库脚 ...

  • 如何安装pl/sql developer?

    在oracle的开发过程中, 我们难免会使用第三方开发的软件来辅助我们书写SQL, pl/sql是一个不错的sql书写工具, 下面我讲讲解如何安装和简单的使用pl/sql. Let's go!!! 操 ...

  • Oracle数据库中pl/sql的个性化设置

    每次看到别人的pl/sql编辑界面特别美观,而且输入还很快捷,后来看了下,原来还能这样设置,确实方便许多. 操作方法 01 打开pl/sql界面,点击菜单栏上的工具,在下拉菜单中选择首选项 02 我们 ...