oracle 条件控制语句 循环语句(loop)

本文详细介绍了Oracle数据库中的条件控制语句,包括if-then、if-then-else、if-then-elsif及case语句,并探讨了循环结构,如基本loop、while loop、for loop以及嵌套循环的使用方法。

条件控制语句

1. if - then语句

if - then 语法:
 if 条件 then
   end if ;
   
--例:

declare
   a number(2):=10;
  begin 
   if (a<20) then
   	dbms_output.put_line('a 小于 20 ' );
  end if; 
     dbms_output.put_line('a 的值 ' || a); 
  end;

2. if - then - else语句

if-then-else 语句的语法: 
if 条件 then 
  S1; 
 else
  S2; 
end if; 

--例:

declare  number(2) := 20;
   begin 
   	if( a < 20 ) then
   		dbms_output.put_line('a 小于 20 ' ); 
   	else
   		dbms_output.put_line('a 不小于 20 ' ); 
   	end if; 
  dbms_output.put_line('a 的值 ' || a); 
  end;

3. if - then - elsif语句

/*
if - then - elsif语句
1.判断成年还是未成年(18岁)(单分支结构)
2.青年 (18-40)中年老年      (多分支结构)
if 多分支
  */

declare
  a int := &age;
begin
  if a < 18 then
    dbms_output.put_line('未成年!');
    
  elsif a between 18 and 45 then
    dbms_output.put_line('青年!');
    
  elsif a between '46' and '69' then
    dbms_output.put_line('中年!');
    
  elsif a between '18' and '45' then
    dbms_output.put_line('老年!');
    
  else
    dbms_output.put_line('年龄不符合要求!');
    
  end if;
end;

4. case语句

declare
  a int := &a;--接受键盘输入数据
begin
  case
    when a < 18 then
      dbms_output.put_line('未成年!');
    when 18 < a and a < 45 then
      dbms_output.put_line('青年!');
    when 46 < a and a < 69 then
      dbms_output.put_line('中年!');
    when a > 69 and a < 100 then
      dbms_output.put_line('老年!');
    else
      dbms_output.put_line('年龄不符合要求!');
  end case;
end;

循环语句

1. 基本loop循环

语法:
LOOP 
	Sequence of statements;
END LOOP;

 例子:

declare
   x number:=10;
   begin
loop
       dbms_output.put_line(x);
       x := x+10;
       --第一种退出方式
       /*if x > 50 then
         exit;
         end if;*/
       
       --第二种退出方式
       exit  when x>50;
       end loop;
       dbms_output.put_line('循环结束后x的值是'||x);
     end;

2. while loop循环

基本语法:
WHILE condition LOOP 
sequence_of_statements 
END LOOP;
例子:
DECLARE x number := 10; 
 BEGIN 
  WHILE x <= 50 LOOP 
    dbms_output.put_line('a 的值是 ' || x);
    x := x + 10;
  END LOOP;
     dbms_output.put_line('循环结束后,x 的值是: ' || x); 
 END;

3. for loop循环

FOR LOOP 语法:
   FOR counter IN initial_value .. final_value LOOP 			                 		       
      sequence_of_statements;  
   END LOOP;
例子:
DECLARE a number(2);
	 BEGIN 
	   FOR a in 10 .. 20 LOOP 
	     dbms_output.put_line('a 的值是' || a); 
	   END LOOP; 
	 END;


4. 嵌套循环

1)PL/SQL 中嵌套的基本 LOOP 语句的语法如下
 LOOP 
    Sequence of statements1 
    LOOP Sequence of statements2 
     END LOOP;
    END LOOP;2)PL/SQL 中嵌套 FOR LOOP 语句的语法:
 FOR counter1 IN initial_value1 .. final_value1 LOOP
  sequence_of_statements1 
    FOR counter2 IN initial_value2 .. final_value2 LOOP       
       sequence_of_statements2
    END LOOP; 
  END LOOP;3)PL/SQL 中嵌套的 WHILE LOOP 循环语句的语法: 
 WHILE condition1 LOOP 
    sequence_of_statements1 
     WHILE condition2 LOOP 
        sequence_of_statements2 
           END LOOP;
        END LOOP;
------九九乘法表---------
---利用for循环:

DECLARE
    x INT :=1;
    y INT :=1;

BEGIN
  FOR x IN 1 .. 9 LOOP
    FOR y IN 1 .. x LOOP
      dbms_output.put(y || ' x ' || x || ' = ' || x * y || ' ');
    END LOOP;
    dbms_output.put_line(' ');
  END LOOP;
END;




-----利用while:

DECLARE
    x INT := 1;
    y INT;
BEGIN
        WHILE x <= 9 LOOP
            y := 1;
            WHILE y <= x LOOP
                dbms_output.put(y || ' x '|| x || ' = ' || x*y || ' ');
                y := y + 1;
            END LOOP;
            x := x + 1;
            dbms_output.put_line(''); 
        END LOOP;
END;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值