pl/sql 编程(六)

  • 变量常量的声明
v_var varchar2(20) :='变量';
v_var2 varchar2(10) not null default '非空变量2';
v_constant constant varchar2(100) := '常量';
  • 流程控制语句

  1.if....else...条件选择结构

  

declare
  v_number number(3,2) := 2.2;
begin
  if v_number > 2 then
     dbms_output.put_line('v_number 大于 2');
  end if;
   dbms_output.put_line('if 条件语句执行结束');
   
   v_number := 1.2;
    if v_number > 2 then
     dbms_output.put_line('v_number 大于 2');
    else
     dbms_output.put_line('v_number 小于等于 2');
    end if;
   dbms_output.put_line('if else 条件语句执行结束');
   
   if v_number < 1 then
      dbms_output.put_line('v_number 小于 1');
   elsif v_number > 1.2 then
      dbms_output.put_line('v_number 小于 1.2');
   else
      dbms_output.put_line('v_number 小于等于 1.2 大于等于 1');
   end if;
end;

输出结果:

v_number 大于 2
if 条件语句执行结束
v_number 小于等于 2
if else 条件语句执行结束
v_number 小于等于 1.2 大于等于 1

  2.case 条件控制语句

update goods set remark =
 case when goodsid < 10 then  '编号小于10'
      when remark is null then '没有备注'
      else '编号大于等于10且有备注'
 end     
                 
select 
 case when remark is null then '没有备注' 
      when remark is not null then remark
 else '其他' end
from goods

  3.loop循环控制语句

declare 
     v_i number(2) := 0;
begin
     <<fst_loop>>
     loop
         dbms_output.put_line('v_i = ' || v_i);
         v_i := v_i +1;
         exit fst_loop when v_i >5;
     end loop;
     dbms_output.put_line('结束 fst_loop');
     <<sec_loop>>
     loop
         dbms_output.put_line('v_i = ' || v_i);
         v_i := v_i +1;
         if v_i > 10 then
           dbms_output.put_line('v_i ='||v_i||'当前值大于 10');
           exit sec_loop;
         end if; 
     end loop sec_loop;
      dbms_output.put_line('结束 sec_loop');
      
      <<while_loop>>
      while v_i < 15 
            loop
                dbms_output.put_line('v_i = ' || v_i);
                 v_i := v_i +1;
      end loop while_loop;
      dbms_output.put_line('结束 while_loop');
                
      <<for_loop>>
      for v_j in 15..20 loop
          v_i := v_i +1;
      end loop;
      dbms_output.put_line('v_i ='||v_i);
       dbms_output.put_line('结束 for_loop');
      
end;

输出结果:

v_i = 0
v_i = 1
v_i = 2
v_i = 3
v_i = 4
v_i = 5
结束 fst_loop
v_i = 6
v_i = 7
v_i = 8
v_i = 9
v_i = 10
v_i =11当前值大于 10
结束 sec_loop
v_i = 11
v_i = 12
v_i = 13
v_i = 14
结束 while_loop
v_i =21
结束 for_loop

 

 

posted @ 2012-04-12 22:29  shuaisam  阅读(264)  评论(0)    收藏  举报