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;
  • 相关阅读:
    征战蓝桥 —— 2016年第七届 —— C/C++A组第5题——消除尾一
    UVA 10410 Tree Reconstruction (树重建)
    UVA 12166 Equilibrium Mobile (修改天平)(dfs字符串表示的二叉树)
    UVA 1600 Patrol Robot (巡逻机器人)(bfs)
    UVA 712 STrees(S树)
    UVA 536 Tree Recovery (二叉树重建)
    Stall Reservations【贪心】【堆】
    Sunscreen【贪心】
    Sunscreen【贪心】
    Sunscreen【贪心】
  • 原文地址:https://www.cnblogs.com/duguangming/p/10840787.html
Copyright © 2011-2022 走看看