PL/SQL控制结构

一.顺序结构

顺序结构就是按照语句出现的先后顺序执行


 

二.选择结构

选择结构即if结构,通过判断条件为true或为false来执行相应的代码,有下面3种结构

1.if-then

      这个结构只有一个测试条件,如果条件为true则执行then部分的代码,如果条件为false则跳过此结构,下面是一个实例:

      declare 

            var1 constant  int :=50 ;

            var2 constant  int :=200 ;

      if  var1>var2  then

          dbms_output.put_line('var1 var2') ;

      end  if ;

      嵌套if-then结构

      declare 

            var1 constant  int :=50 ;

            var2 constant  int :=200 ;

            var3 constant  int :=120 ;

      if  var1>var2  then

      if  var1>var3  then

          dbms_output.put_line('这三个数中var1最大') ;

      end  if ;

      end  if ;

      ❤注意

       a.每个if语句都有自己的then,以if语句开始的语句行不跟语句结束符号“;”。

       b.每个if语句块以相应的end if结束。

     2.if-then-else

       此语句是在上一个if-then的基础上加上一个else部分来处理当if条件为假时的语句。

       if-then-else也可以嵌套使用,用于处理更为复杂的条件。

       例如:

        if  var1>var2  then

        dbms_output.put_line('var1var2');

             else 

           if  var1=var2  then

              dbms_output.put_line('var1var2一样大') ;

           else  

              dbms_output.put_line('var1小于var2') ;

           end  if;

        end  if;  

       

       c.每个if语句有且只有一个else

       d.else语句后面不跟语句结束符号。

      3.if-then-elseif

        用于替代嵌套if-then-else结构,上面的例子可改写为:

        if  var1>var2  then

        dbms_output.put_line('var1var2');

             elseif  var1=var2  then

              dbms_output.put_line('var1var2一样大') ;

           else  

              dbms_output.put_line('var1小于var2') ;

        end  if; 

        

         e.elseif无匹配的end if


三.NULL结构

     NULL结构也叫空操作或空值处理,特别是在使用if逻辑结构时,用户测试一个条件,当测试条件为真,什么工作都不做,当测试条件为假,则执行某些操作,例如

     if  var1<60  then

        null ;

     else

        insert into stuentCourse varlues('pass',studentNo,courseNo) ;

     end if ;


四.循环结构

Oracle提供三种循环结构

1.loop-exit-end

      语法:

           Loop

              执行语句1

              执行语句2

              ......

           Exit

           End 

      实例:

          set  serveroutput  on

          declare  ctr  integer:=0;

          begin

               dbms_output.put(ctr||'   ');

               ctr:=ctr+1;

               exit  when  ctr=10;

               end  loop;

               dbms_output.put_line(loop exited');

          end;   

2.while-loop-end

      语法:

            While  布尔表达式  loop

                执行语句1

                执行语句2

             ......

             End loop

       实例:

          set  serveroutput  on

          declare  ctr  integer:=0;

          begin

               while  ctr<10  loop

                   dbms_output.put(ctr||'   ');

                   ctr:=ctr+1;

                   end  loop;

               dbms_output.put_line(loop exited');

          end;

3.for-in-loop-end

       语法:

            For  循环变量  in [reverse]   起始值..终止值  loop

                执行语句1

                执行语句2

                ...

            End  loop

        Reverse关键字是标识循环倒过来执行,也就是循环变量从初始值一直减少到终止值。

         实例:

           1.输出09之间的数

          set serveroutput on

          begin

             dbms_output.enable;

             for ctr in 0..9 loop

               dbms_output.put(ctr||'    ');

             end loop;

             dbms_output.put_line('loop exited');

          end;

          2.循环打印阿斯克码表

          set serveroutput on size 10240

SQL> declare

  2  i number;

  3  j number;

  4  k number;

  5  begin

  6       for i in 2..15 loop

  7           for j in 1..16 loop

  8               k:=i*16+j;

  9  dbms_output.put((to_char(k,'000'))||':'||chr(k)||'  ');

 10           if k mod 8=0 then

 11              dbms_output.put_line('');

 12            end if;

 13           end loop;

 14       end loop;

 15  end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值