*****************************************
???PLSQL流程控制
*****************************************
if判断
declare
??????? v_name varchar2(20):='cheng';
begin
???? if v_name='0701' then
??????? dbms_output.put_line('0701');
???? elsif v_name='cheng' then
??????? dbms_output.put_line('cheng');
???? else
??????? dbms_output.put_line('false');
???? end if;
end;
loop循环,注意退出exit是退出循环,而不是退出整个代码块
declare
?????? v_i binary_integer:=1;
begin
???? loop
???????? if v_i>10 then
??????????? exit;
???????? end if;
???????? v_i:=v_i+1;
???????? dbms_output.put_line('hehe');
???? end loop;
?????dbms_output.put_line('over');
end;
loop简化写法
declare
?????? v_i binary_integer:=1;
begin
???? loop
???????? exit when v_i>10;
???????? v_i :=v_i+1;
???????? dbms_output.put_line('hehe');
???? end loop;
?????dbms_output.put_line('over');
end;
while循环
declare
?????? v_i binary_integer:=1;
begin
?????? while v_i<=10 loop
???????????? dbms_output.put_line('hello'||v_i);
???????????? v_i:=v_i+1;
?????? end loop;
?????? dbms_output.put_line('over');
end;
do…while循环
declare
?????? v_i binary_integer:=1;
begin
?????? loop
???????????? dbms_output.put_line('hello'||v_i);
???????????? v_i:=v_i+1;
?????????????? exit when(v_i>10);--当v_i>10时,退出循环
?????? end loop;
?????? dbms_output.put_line('over');
end;
for循环,注意不需要声明变量
begin
???? for v_i in 1..10 loop
???????? dbms_output.put_line('hello'||v_i);
???? end loop;
?????dbms_output.put_line('over');
end;
*****************************************
PLSQL异常处理
*****************************************
1、声明异常
?异常名 exception;
2、抛出异常
?raise异常名
3、处理异常
?抛出异常后的逻辑代码不会被继续执行
异常的定义使用
??? ―――――――――――――――――――――――――――――――――――――
??? begin
???? ???? dbms_output.put_line(1/0);
??? exception
??????????? when others then
??????????????? dbms_output.put_line('error');
end;
?
??? declare
??????????? e_myException exception;
??? begin
??????????? dbms_output.put_line('hello');
??????????? raise e_myException; --raise抛出异常,用此关键字,抛出后转到自定义的e_myException ,执行其里面的putline函数后,再跳到end处,结束PL/SQL块,raise接下面的2句不会继续执行。
??????????? dbms_output.put_line('world');
??????????? dbms_output.put_line(1/0);
??? exception
??????????? when e_myException then
??????????????? dbms_output.put_line(sqlcode); --当前会话执行状态,错误编码
??????????????? dbms_output.put_line(sqlerrm); --当前错误信息
??????????????? dbms_output.put_line('my error');
??????????? when others then
??????????????? dbms_output.put_line('error');
??? end;
?
转载自:http://www.blogjava.net/cheneyfree/archive/2008/07/19/216090.html?