DMSQL的循环结构

一、LOOP语句

      1.语法:

         LOOP

           代码;

         END LOOP; 

      2.例子:

create or replace procedure pro_loop(a int) as
begin
 loop
    if a<=0 then
       exit;
      end if;
      print(a);
       a:=a-1;
       end loop;
       end;
       
       call pro_loop(9);

结果:

9
8
7
6
5
4
3
2
1

二、while语句

       1.语法:

          WHILE 条件 LOOP

           代码

          END LOOP;

       2.例子:

create or replace procedure pro_while(a int) as
begin
 while a>0  loop
      print(a);
       a:=a-1;
       end loop;
       end;
       
       call pro_while(3);

结果:

3
2

三、for语句

     1.语法:

        for [循环计数器] in [REVERSE]  [下限]..[上限] loop

          代码;

        end loop;

     2.例子:

 CREATE OR REPLACE PROCEDURE PROC_FOR1 (a IN OUT INT) AS 
  BEGIN 
   FOR I IN REVERSE 1 .. a LOOP 
    PRINT I; 
    a:=I-1; 
   END LOOP; 
  END;
  
  call proc_for1(5);

结果:

5
4
3
2
1

 四、REPEAT语句

       1.语法:

          REPEAT

           代码;

         UNTIL 条件表达式;

       2.说明:该语句是先执行后判断条件是否为true,如果是继续循环,如果是false,结束循环,该循环语句至少执行一次;

       3.例子:

  create or replace procedure pro_repeat(a int) as
     begin
      repeat
        print a;
           a:=a-1;
           until a<=0;
      end;
    
    call pro_repeat(5);

结果:

5
4
3
2
1

五、forall语句

       1.语法

         FORALL<循环计数器> IN <bounds_clause> [SAVE EXCEPTIONS] <forall_dml_stmt>;

                 <bounds_clause> ::= <下限表达式>..<上限表达式>  

                                                   | INDICES OF <集合> [BETWEEN ] <下限表达式> AND <上限表达式>  

                                                   | VALUES OF <集合>

                 <forall_dml_stmt> ::= <INSERT 语句>| <UPDATE 语句> | <DELETE 语句> | <MERGE INTO 语句>

        2.说明:

          SAVE EXCEPTIONS:指定即使一些DML 语句失败,直到FORALL 执行结束才抛出异常。

          INDICES OF <集合>:跳过集合中没有赋值的元素,可用于指向稀疏数组的实际下标。

          VALUES OF <集合>:把该集合中的值作为下标。

        3.例子:

create or replace procedure pro_forall as
      begin
          forall i in 1..10 
              insert into t1_forall select ID,NAME from PERSON;
      end;
       call pro_forall;
      select * from t1_forall;

 六、EXIT语句

       1.语法:

         EXIT [<标号名>] [WHEN <条件表达式>]; 

         退出循环的标志,如果有标号名,则以标号的循环语句退出,如果省略标号名,则以包含exit的循环语句结束。

       2.以下两个例子说明:

DECLARE  
  a INT;  
  b INT;  
  BEGIN 
   a := 0;  
   LOOP 
    FOR b in 1 .. 2 LOOP  
     PRINT '内层循环' ||b; 
     EXIT WHEN a > 3;  
    END LOOP; 
     a := a + 2;  
     PRINT '---外层循环' ||a;  
     EXIT WHEN a> 5; 
   END LOOP;  
  END; 

结果:

内层循环1
内层循环2
---外层循环2
内层循环1
内层循环2
---外层循环4
内层循环1
---外层循环6
 

DECLARE  
 a INT;  
 b INT; 
 BEGIN 
  a := 0;  
  <<flag1>> 
  LOOP 
   FOR b in 1 .. 2 LOOP  
    PRINT '内层循环' ||b; 
    EXIT flag1 WHEN a > 3; 
   END LOOP; a := a + 2;  
    PRINT '---外层循环' ||a;  
    EXIT WHEN a> 5;
  END LOOP; 
 END; 

结果:

内层循环1
内层循环2
---外层循环2
内层循环1
内层循环2
---外层循环4
内层循环1

  3.when省略,直接终止循环 

 DECLARE
   a int;
   begin
      a:=2;
     loop
         print '循环'||a;
            exit;
      end loop;
    end;

结果:循环2

七、CONTINUE语句

      1.语法:CONTINUE [[标号名] WHEN <条件表达式>];

      2.说明:

        若CONTINUE 后没有跟WHEN 子句,则无条件立即退出当前循环,并且将语句控制转 移到这次循环的下一次循环迭代或者是一个指定标号名的循环的开始位置并继续执行。

DECLARE 
  x INT:= 0; 
  BEGIN 
    <<flag1>> -- CONTINUE 跳出之后,回到这里 
    FOR I IN 1..4 LOOP 
    print('循环内部,CONTINUE 之前:  x = ' || TO_CHAR(x)); x := x + 1; 
     CONTINUE flag1;     
       print('循环内部,CONTINUE 之后:  x = ' || TO_CHAR(x)); 
    END LOOP;  
     print(' 循环外部:  x = ' || TO_CHAR(x));
   END; 

结果:

循环内部,CONTINUE 之前:  x = 0
循环内部,CONTINUE 之前:  x = 1
循环内部,CONTINUE 之前:  x = 2
循环内部,CONTINUE 之前:  x = 3
 循环外部:  x = 4

  若CONTINUE 语句中包含WHEN 子句,则当WHEN 子句的条件表达式为TURE 时才退 出当前循环,将语句控制转移到下一次循环迭代或者是一个指定标号名的循环的开始位置并 继续执行。

DECLARE 
  x INT:= 0; 
  BEGIN -- CONTINUE 跳出之后,回到这里 
   FOR I IN 1..4 LOOP 
    print ('循环内部,CONTINUE 之前:  x = ' || TO_CHAR(x)); 
    x := x + 1; 
    CONTINUE WHEN x > 3;    
    print('循环内部,CONTINUE 之后:  x = ' || TO_CHAR(x)); 
   END LOOP;  
    print (' 循环外部:  x = ' || TO_CHAR(x));
  END; 

结果:

循环内部,CONTINUE 之前:  x = 0
循环内部,CONTINUE 之后:  x = 1
循环内部,CONTINUE 之前:  x = 1
循环内部,CONTINUE 之后:  x = 2
循环内部,CONTINUE 之前:  x = 2
循环内部,CONTINUE 之后:  x = 3
循环内部,CONTINUE 之前:  x = 3
 循环外部:  x = 4

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Scratch是一种图形化编程语言,用于教育和初学者学习编程。在Scratch中,循环结构是一种重要的编程概念,它允许程序重复执行一段代码块。以下是Scratch中常用的循环结构: 1. 重复循环(Repeat):重复循环是最基本的循环结构,它允许指定一个固定的次数来执行代码块。你可以在重复循环中设置一个计数器,每次循环时计数器加一,直到达到指定的次数为止。 2. 条件循环(Forever、Repeat Until、If):条件循环根据特定的条件来判断是否继续执行代码块。其中,Forever循环会一直执行代码块,直到程序停止;Repeat Until循环会在条件为真之前一直执行代码块;If语句可以用来判断是否满足某个条件,如果满足则执行代码块。 3. 遍历循环(For):遍历循环是一种特殊的循环结构,它允许按照一定的步长和范围来遍历一个集合或序列。你可以设置一个变量作为计数器,在每次循环时更新计数器的值,并根据计数器的值执行相应的操作。 4. 条件控制循环(While):条件控制循环根据特定的条件来判断是否继续执行代码块。只有当条件为真时,循环才会继续执行。你可以在循环体内部改变条件的值,以控制循环的执行次数。 以上是Scratch中常用的循环结构,它们可以帮助你实现重复执行代码的功能。如果你对具体的循环结构有更多的疑问,请告诉我,我会尽力解答。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值