Oracle pl/sql基础---循环

来源:互联网 发布:知乎手机端发文章 编辑:程序博客网 时间:2024/05/16 07:39

一、循环语法以及用法

1、loop的语法以及用法,如下

   loop

    ---处理程序

  end loop; 

例子:

 declare v_counter binary_integer:=1--定义变量

begin 

  loop

     dbms_output.put_line(v_counter);

 v_counter:=v_counter+1;

 if v_counter=30 then--如果变量大于30就跳出循环

   exit;

    end if;

  end loop;

end;

2、for- loop 的语法以及用法,语法如下:

For  变量 in 起始值..结束值  loop

  ---处理程序

end loop;

例子:

declare V_counter binary_integer:=1;

begin

for V_counter in 1..30 loop

    insert into tb_studentInfo values('名字'||V_counter,'年龄'||v_counter);

end loop;

commit;

end;

3、Goto 顺序控制

 语法:

Goto label;

其中label是用双箭头括起来的标记,下面例子

declare
v_counter binary_integer:=1;
begin
  for v_counter in 1..21 loop
    insert into tb_studentinfo values(sys_guid(),'易**'||v_counter,v_counter,'男村'||v_counter||'组', '男');
    if v_counter=10 then
      goto Insert_Gril;
      exit;
      end if;
     end loop;  
   <<Insert_Gril>>---此处为标记
   for v_counter in 0..30 loop
      insert into tb_studentinfo values(sys_guid(),'某女士'||v_counter,v_counter,'女村'||v_counter||'组', '女');
     end loop;   
   commit;
end;

 

二、预定义异常

1、DUP_VAL_INDEX :违反唯一性

2、LOGIN_DENIED:登录失败、用户名和密码错误;

3、NO_DATA_FOUND:没有发现数据存在;

4、TOO_MANY_ROWS:数据行太多,即一个Select....Insert 语句匹配的多个数据行;

5、ZERO_DIVIDE:除数为零;

6、VALUE_ERROR:算法或转换错误;

7、CASE_NOT_FOUND:在case语句中没有发现匹配When项