小菜毛毛技术分享

与大家共同成长

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  164 Posts :: 141 Stories :: 94 Comments :: 0 Trackbacks
一、条件分支语句
条件分支语句用于依据特定的情况选择要执行的操作,PL/SQL提供了三种条件分支语句:if-then, if-then-else,if-then-elsif。
语法如下:
Oracle代码 复制代码
  1. if conditions then   
  2.    statements;   
  3. [elseif conditions then    
  4.    statements;]   
  5. [else    
  6.    statements;]   
  7. end if;  

   1、if-then示例
    用于执行单一条件判断,如果满足特定条件则会执行相应操作,如果不满足特定条件则退出条件分支语句。
  
Oracle代码 复制代码
  1.     
  2.  declare   
  3.    v_count number;   
  4.  begin   
  5.  select count(*) into v_count from cip_temps;   
  6.  if(v_count>0) then   
  7.  dbms_output.put_line('v_cont的值:'|| v_count);   
  8.    end if;   
  9.  end;   
  10. /   

    2、if-then-else示例
     用于执行二重条件判断,如果满足特定条件则执行一组操作,如果不满足则执行另一组操作。
     
Oracle代码 复制代码
  1.  declare   
  2.    v_count number;   
  3.  begin   
  4.    select count(*) into v_count from cip_temps;   
  5.      if(v_count>11) then   
  6.   dbms_output.put_line('v_cont的值:'|| v_count);   
  7.      else    
  8.      dbms_output.put_line('v_count的值:'|| v_count);   
  9.    end if;   
  10.  end;   
  11. /   

  
    3、if-then-elsif示例
     用于执行多重条件判断,如果满足特定条件1则执行第一组操作,如果满足特定条件2则执行第二组操作,以此类推,如果都不满足特定条件则执行不满足条件的操作。
   
Oracle代码 复制代码
  1. declare   
  2.   v_count number;   
  3. begin   
  4.   select count(*) into v_count from cip_temps;   
  5.   if(v_count>10) then   
  6.     dbms_output.put_line('if操作___v_cont的值:'|| v_count);   
  7.   elsif (v_count=10) then   
  8.     dbms_output.put_line('elsif操作____v_count的值:'|| v_count);   
  9.   else   
  10.     dbms_output.put_line('else操作____v_cout的值:'||v_count);   
  11.   end if;   
  12. end;   
  13. /    

二、case语句
当执行多重条件分支语句时,使用case语句更加简洁、而且效率也更好。case语句处理多重条件分支语句有两种方法,第一种方法是使用单一选择符进行等值比较。第二种方法是使用多种条件进行非等值比较。
   1、使用单一选择符进行等值比较
      当执行case语句执行多重条件分支时,如果条件选择符完全相同,并且条件表达式为相同条件选择,那么可以选择单一选择符进行等值比较,语法如下:
  
Oracle代码 复制代码
  1. case  条件选择符   
  2.    when   条件值表达式1 then 要执行的操作1;   
  3.    when   条件值表达式2 then 要执行的操作2;   
  4.     。。。。。。。   
  5.    else    
  6.      要执行的操作。   
  7.    end case;   

  示例如下:
   
Oracle代码 复制代码
  1. declare   
  2.   v_count number;   
  3. begi   
  4.  select count(*) into v_count from cip_temps;   
  5.   case v_count   
  6.     when 1 then   
  7.       dbms_output.put_line('when 1操作___v_cont的值:'|| v_count);   
  8.     when 5 then   
  9.      dbms_output.put_line('when 5操作___v_count的值:'|| v_count);   
  10.     when 10 then   
  11.      dbms_output.put_line('when 10操作____v_count的值:'|| v_count);   
  12.   else   
  13.     dbms_output.put_line('else操作____v_cout的值:'||v_count);   
  14.  end case;   
  15. end;   
  16. /    

   2、case使用多种条件进行比较
   如果选择多个条件进行不同比较时,那么必须在when子句中指定比较条件,语法如下:
    
Oracle代码 复制代码
  1. case     
  2.    when   条件值表达式1 then 要执行的操作1;   
  3.    when   条件值表达式2 then 要执行的操作2;   
  4.     。。。。。。。   
  5.    else    
  6.      要执行的操作。   
  7.    end case;   

  示例如下:
  
Oracle代码 复制代码
  1. declare   
  2.   v_count number;   
  3. begin   
  4.  select count(*) into v_count from cip_temps;   
  5.   case    
  6.     when v_count>10 then   
  7.       dbms_output.put_line('when 1操作___v_cont的值:'|| v_count);   
  8.     when v_count>5 then   
  9.      dbms_output.put_line('when 5操作___v_count的值:'|| v_count);   
  10.     when v_count>4 then   
  11.      dbms_output.put_line('when 10操作____v_count的值:'|| v_count);   
  12.     else   
  13.     dbms_output.put_line('else操作____v_cout的值:'||v_count);   
  14.  end case;   
  15. end;   
  16. /    

三、循环语句
  三种循环:基本循环、while循环、for循环语句。
1、基本循环
循环语句以loop开始,以end loop结束,其语法如下:
  loop
      statement1;
       。。。。。。
       exit[when condition];
    end loop;
注意:当执行基本循环语句时,无论是否满足条件,语句至少会被执行一次,当condition为true时,会推出循环。并执行end loop后的相应操作。当编写基本循环语句时,一定要有exit语句,否则会出现死循环,另外还要定义循环控制变量。
  示例如下:
Oracle代码 复制代码
  1.  declare   
  2.   i int:=1;   
  3.  begin   
  4.   loop      
  5. dbms_output.put_line(i);   
  6. exit when i=10;   
  7. i:=i+1;   
  8. nd loop;   
  9.  end;   
  10.  /   

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

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

当条件为true执行循环体内语句,当条件为false或full时,则跳出循环执行end loop以后的语句,另外还要定义循环控制变量。
示例如下:
Oracle代码 复制代码
  1.   declare   
  2.    i int:=1;   
  3.   begin   
  4.    while i<=10 loop      
  5.   dbms_output.put_line(i);   
  6.  i:=i+1;   
  7. end loop;   
  8.   end;   
  9.   /   

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选项,那么每次循环时循环变量会自动减一。示例如下:
Oracle代码 复制代码
  1. declare   
  2.  begin   
  3.  for i in reverse  1..10 loop   
  4.   dbms_output.put_line(i);   
  5.  end loop;   
  6.  end;   
  7.  /    
posted on 2009-08-20 20:29 小菜毛毛 阅读(489) 评论(0)  编辑  收藏 所属分类: 数据库

只有注册用户登录后才能发表评论。


网站导航: