oracle 控制语句

一、条件分支语句
条件分支语句用于依据特定的情况选择要执行的操作,PL/SQL提供了三种条件分支语句:if-then, if-then-else,if-then-elsif。
语法如下:

if conditions then
   statements;
[elseif conditions then 
   statements;]
[else 
   statements;]
end if;


   1、if-then示例
    用于执行单一条件判断,如果满足特定条件则会执行相应操作,如果不满足特定条件则退出条件分支语句。
  

    
    declare
      v_count number;
    begin
    select count(*) into v_count from cip_temps;
    if(v_count>0) then
  	 dbms_output.put_line('v_cont的值:'|| v_count);
      end if;
    end;
   /
   


    2、if-then-else示例
     用于执行二重条件判断,如果满足特定条件则执行一组操作,如果不满足则执行另一组操作。

      declare
        v_count number;
      begin
        select count(*) into v_count from cip_temps;
          if(v_count>11) then
  	    dbms_output.put_line('v_cont的值:'|| v_count);
          else 
          dbms_output.put_line('v_count的值:'|| v_count);
        end if;
      end;
     /
    


  
    3、if-then-elsif示例
     用于执行多重条件判断,如果满足特定条件1则执行第一组操作,如果满足特定条件2则执行第二组操作,以此类推,如果都不满足特定条件则执行不满足条件的操作。
   

 
      declare
        v_count number;
      begin
        select count(*) into v_count from cip_temps;
        if(v_count>10) then
  	       dbms_output.put_line('if操作___v_cont的值:'|| v_count);
        elsif (v_count=10) then
          dbms_output.put_line('elsif操作____v_count的值:'|| v_count);
        else
          dbms_output.put_line('else操作____v_cout的值:'||v_count);
        end if;
      end;
      / 
 


二、case语句
当执行多重条件分支语句时,使用case语句更加简洁、而且效率也更好。case语句处理多重条件分支语句有两种方法,第一种方法是使用单一选择符进行等值比较。第二种方法是使用多种条件进行非等值比较。
   1、使用单一选择符进行等值比较
      当执行case语句执行多重条件分支时,如果条件选择符完全相同,并且条件表达式为相同条件选择,那么可以选择单一选择符进行等值比较,语法如下:
  

   case  条件选择符
      when   条件值表达式1 then 要执行的操作1;
      when   条件值表达式2 then 要执行的操作2;
       。。。。。。。
      else 
        要执行的操作。
      end case;
   


  示例如下:

    declare
      v_count number;
    begi
     select count(*) into v_count from cip_temps;
      case v_count
        when 1 then
 	        dbms_output.put_line('when 1操作___v_cont的值:'|| v_count);
        when 5 then
         dbms_output.put_line('when 5操作___v_count的值:'|| v_count);
        when 10 then
         dbms_output.put_line('when 10操作____v_count的值:'|| v_count);
      else
        dbms_output.put_line('else操作____v_cout的值:'||v_count);
     end case;
    end;
    / 
 


   2、case使用多种条件进行比较
   如果选择多个条件进行不同比较时,那么必须在when子句中指定比较条件,语法如下:
    

   case  
      when   条件值表达式1 then 要执行的操作1;
      when   条件值表达式2 then 要执行的操作2;
       。。。。。。。
      else 
        要执行的操作。
      end case;
   


  示例如下:
  

    declare
      v_count number;
    begin
     select count(*) into v_count from cip_temps;
      case 
        when v_count>10 then
 	        dbms_output.put_line('when 1操作___v_cont的值:'|| v_count);
        when v_count>5 then
         dbms_output.put_line('when 5操作___v_count的值:'|| v_count);
        when v_count>4 then
         dbms_output.put_line('when 10操作____v_count的值:'|| v_count);
        else
        dbms_output.put_line('else操作____v_cout的值:'||v_count);
     end case;
    end;
    / 
 


三、循环语句
  三种循环:基本循环、while循环、for循环语句。
1、基本循环
循环语句以loop开始,以end loop结束,其语法如下:
  loop
      statement1;
       。。。。。。
       exit[when condition];
    end loop;
注意:当执行基本循环语句时,无论是否满足条件,语句至少会被执行一次,当condition为true时,会推出循环。并执行end loop后的相应操作。当编写基本循环语句时,一定要有exit语句,否则会出现死循环,另外还要定义循环控制变量。
  示例如下:

    declare
     i int:=1;
    begin
     loop   
	  dbms_output.put_line(i);
	  exit when i=10;
	  i:=i+1;
	 end loop;
    end;
    /
 


2、while循环
对于while循环,只要条件为true时,才执行循环体内语句。while循环以while...loop开始,以end loop结束。其语法如下:

while 条件 loop
语句1;
语法2;
end loop;

当条件为true执行循环体内语句,当条件为false或full时,则跳出循环执行end loop以后的语句,另外还要定义循环控制变量。
示例如下:

    declare
     i int:=1;
    begin
     while i<=10 loop   
	   dbms_output.put_line(i);
	  i:=i+1;
	 end loop;
    end;
    /
 


3、for循环
当使用for循环时,oracle会隐藏定义循环控制变量(即不需要人工定义循环控制变量),语法如下:

for counter in[reverse]
lower_bound..upper_bound loop
      statement1;
      statement2;
      ..........
end loop;

注意:counter循环控制变量,oracle会隐藏定义,lower_bound和upper_bound分别对应于循环变量的下界值和上界值,默认情况下,当使用for循环时,每次循环时循环控制变量会自动增一;如果指定reverse选项,那么每次循环时循环变量会自动减一。示例如下:

declare   
 begin   
 for i in reverse  1..10 loop   
  dbms_output.put_line(i);   
 end loop;   
 end;   
 /    
 

你可能感兴趣的:(oracle,sql)