数据库Oracle与Mysql语法对比:循环结构

本文介绍了PL/SQL中的三种循环结构:基本LOOP循环、FOR LOOP循环和WHILE LOOP循环,并通过实例展示了如何使用这些循环来解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

循环结构是最重要的程序控制结构,用来控制反复执行一段程序。比如要进行累加,则可以通过适当的循环程序实现。PL/SQL 循环结构可划分为以下 3 种:
 基本 LOOP 循环。
 FOR LOOP 循环。
 WHILE LOOP 循环。

Oracle

1.基本 LOOP 循环

基本循环的结构如下:
LOOP –循环起始标识 语句 1; 语句 2; EXIT [WHEN 条件];
END LOOP; –循环结束标识
该循环的作用是反复执行 LOOP 与 END LOOP 之间的语句。
EXIT 用于在循环过程中退出循环,WHEN 用于定义 EXIT 的退出条件。如果没有
WHEN 条件,遇到 EXIT 语句则无条件退出循环。
【训练 1】 求:12+32+52+…+152 的值。
输入并执行以下程序:

SET SERVEROUTPUT ON 
DECLARE     v_total  NUMBER(6):=0;    v_count  NUMBER(6):=1; 
    BEGIN   LOOP 
        v_total:=v_total+v_count**2; 
        EXIT WHEN v_count=15;--条件退出 v_count:=v_count+2; 
   END LOOP; 
    DBMS_OUTPUT.PUT_LINE(v_total); 
    END; 

输出结果为: 680

2.FOR LOOP 循环

FOR 循环是固定次数循环,格式如下:
FOR 控制变量 in [REVERSE] 下限..上限 LOOP 语句 1; 语句 2;
END LOOP;
循环控制变量是隐含定义的,不需要声明。
下限和上限用于指明循环次数。正常情况下循环控制变量的取值由下限到上限递增,
REVERSE 关键字表示循环控制变量的取值由上限到下限递减。
【训练 2】以下是用 FOR 循环输出图形。

    SET SERVEROUTPUT ON 
    BEGIN 
    FOR I IN 1..8  
    LOOP 
       DBMS_OUTPUT.PUT_LINE(to_char(i)||rpad('*',I,'*')); 
    END LOOP;   
    END; 
输出结果为: 

1*
2**
3***
4****
5*****
6******
7*******

3.WHILE LOOP 循环

WHILE 循环是有条件循环,其格式如下:
WHILE 条件 LOOP 语句 1; 语句 2; END LOOP;
当条件满足时,执行循环体;当条件不满足时,则结束循环。如果第一次判断条件为
假,则不执行循环体。 以下是 WHILE 循环结构的练习。
【训练 3】 使用 WHILE 循环向 emp 表连续插入 5 个记录。 步骤 1:执行下面的程序:

SET SERVEROUTPUT ON DECLARE 
v_count NUMBER(2) := 1; BEGIN 
   WHILE v_count <6 LOOP 
    INSERT INTO emp(empno, ename) 
    VALUES (5000+v_count, '临时'); 
    v_count := v_count + 1; 
   END LOOP; 
   COMMIT; END; 

输出结果为:
PL/SQL 过程已成功完成。 步骤 2:显示插入的记录:
SELECT empno,ename FROM emp WHERE ename=’临时’;
输出结果为:
EMPNO ENAME
—————— ———-
5001 临时
5002 临时
5003 临时
5004 临时
5005 临时

Mysql

mysql三种循环:loop,while,repeat。

loop

DELIMITER $$ 
drop procedure if exists pro_loop$$ 
CREATE PROCEDURE pro_loop(p1 INT)  
BEGIN  
  label1: LOOP  
    SET p1 = p1 + 1;  
    IF p1 < 10 THEN  
      SELECT p1 AS result;  
      ITERATE label1;  
    END IF;  
    SELECT 'END IF' AS result;   
    LEAVE label1;  
  END LOOP label1;  
  SET @x = p1;  
  SELECT @x as result;  
END$$  
call pro_loop(8);

while

DELIMITER $$  
DROP PROCEDURE IF EXISTS pro_while$$  
CREATE PROCEDURE pro_while  
(  
    i INT  
)  
BEGIN  
    DECLARE j INT DEFAULT 1;  
    WHILE j < i DO  
        SELECT j AS result;  
        SET j = j + 1;  
    END WHILE;  
END$$  
call pro_while(3);

REPEAT

DELIMITER $$  
DROP PROCEDURE IF EXISTS pro_repeat$$  
CREATE PROCEDURE pro_repeat(p1 INT)  
BEGIN  
    SET @X = 0;  
    REPEAT  
    SELECT @X AS result;  
    SET @X = @X + 1;  
    UNTIL @X > p1 
    END REPEAT;  
END$$ 
call pro_repeat(2); 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值