zoukankan      html  css  js  c++  java
  • Oracle的三种循环

    一.loop循环

    语法:
    声明循环变量
    loop
    判断循环条件 ,如果循环条件不成立,跳出循环
    if 条件表达式 then
    exit;
    end if;
    语句块;
    改变循环变量的值
    end loop;

    举例:输出1到100以内的自然数

    declare
    -- 声明循环变量
    v_i number(8):=1;
    begin
    loop
    -- 判断循环条件,条件成立,跳出循环
    if v_i>100 then
    exit;
    end if;
    -- 输出1到100以内的自然数
    dbms_output.put_line(v_i);
    -- 改变循环变量的值
    v_i:=v_i+1;
    end loop;
    end;

    举例:输出部门表的所有内容
    into只能用一个或者一行的方式赋值,我们可以用bulk collect into来给行类型变量整体赋值,也就是说可以一次性
    把所有数据查询出来,为table类型的变量赋值。

    declare
    -- 声明table类型
    type dept_table_type is table of dept%rowtype
    index by binary_integer;
    -- 声明table类型的变量,用来存储部门表的所有数据
    v_dept dept_table_type;
    -- 声明循环变量
    v_i number(8):=1;
    begin
    -- 查询所有部门表的内容,放到v_dept变量中
    select * bulk collect into v_dept from dept;
    -- 循环除数v_dept变量中的值
    loop
    -- 判断循环条件
    if v_i>v_dept.count then
    exit;
    end if;
    dbms_output.put_line('部门编号:'||v_dept(v_i).deptno||',部门名称:'||v_dept(v_i).dname
    ||'部门位置:'||v_dept(v_i).loc);
    -- 改变循环变量的值
    v_i:=v_i+1;
    end loop;
    end;

    二.while循环

    语法:
    声明循环变量,给循环变量赋初始值
    while 条件表达式
    loop
    语句块;
    改变循环变量的值
    end loop;

    举例:输出1到100以内的自然数

    declare
    -- 声明循环变量
    v_i number(8):=1;
    v_str varchar2(1000):='';
    begin
    --如果条件成立,执行循环
    while v_i<=100
    loop
    v_str:=v_str||v_i||' ';
    -- 改变循环变量的值
    v_i:=v_i+1;
    end loop;
    dbms_output.put_line(v_str);
    end;

    三.for循环

    语法:
    for 循环变量 in 循环变量的开始值..循环变量的结束值
    loop
    语句块;
    end loop;
    注意:for循环,循环变量可以直接使用,不用声明。in 包含循环变量的开始值和结束值
    举例:输出1到100以内的自然数

    begin
    -- 循环变量不用声明
    for v_i in 1..100
    loop
    dbms_output.put_line(v_i);
    end loop;
    end;

    举例:输出部门表的所有内容

    declare
    -- 声明table类型
    type dept_table_type is table of dept%rowtype
    index by binary_integer;
    -- 声明table类型的变量,用来存储部门表的所有数据
    v_dept dept_table_type;
    begin
    -- 查询所有部门表的内容,放到v_dept变量中
    select * bulk collect into v_dept from dept;
    -- 循环除数v_dept变量中的值
    for v_i in v_dept.first..v_dept.last
    loop
    dbms_output.put_line('部门编号:'||v_dept(v_i).deptno||',部门名称:'||v_dept(v_i).dname
    ||'部门位置:'||v_dept(v_i).loc);
    end loop;
    end;
  • 相关阅读:
    20155229 2016-2017-2 《Java程序设计》第九周学习总结
    20155229实验二 《Java面向对象程序设计》实验报告
    10.11课后练习——MyOD系统调用版本
    2017-2018-1 20155223 《信息安全系统设计基础》第5周学习总结
    课堂实践及课后练习9.27@20155223
    2017-2018-1 20155223 《信息安全系统设计基础》第3周学习总结
    20155223 2016-2017-2《Java程序设计》课程总结
    Java第五次实验报告
    课堂代码练习补交
    第四次实验报告
  • 原文地址:https://www.cnblogs.com/duguangming/p/10840787.html
Copyright © 2011-2022 走看看