一、条件分支语句
条件分支语句用于依据特定的情况选择要执行的操作,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选项,那么每次循环时循环变量会自动减一。示例如下: