Oracle_学习使用控制结构

本文详细介绍了 PL/SQL 中的条件分支语句(包括 if-then, if-then-else, if-then-elsif)及 case 语句的用法,并提供了具体的示例代码。此外还讲解了三种循环语句(基本循环、while 循环、for 循环)的语法及应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[b]一、条件分支语句[/b]
条件分支语句用于依据特定的情况选择要执行的操作,PL/SQL提供了三种条件分支语句:if-then, if-then-else,if-then-elsif。
语法如下:

if conditions then
statements;
[elseif conditions then
statements;]
[else
statements;]
end if;

[b]1、if-then示例[/b]
用于执行单一条件判断,如果满足特定条件则会执行相应操作,如果不满足特定条件则退出条件分支语句。
    
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;
/

[b]2、if-then-else示例[/b]
用于执行二重条件判断,如果满足特定条件则执行一组操作,如果不满足则执行另一组操作。

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;
/


[b]3、if-then-elsif示例[/b]
用于执行多重条件判断,如果满足特定条件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;
/

[b] 二、case语句[/b]
当执行多重条件分支语句时,使用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;
/

[b]三、循环语句[/b]
三种循环:基本循环、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结束。其语法如下:
[color=red]
while 条件 loop
语句1;
语法2;
end loop;
[/color]
当条件为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;
/

[b]3、for循环[/b]
当使用for循环时,oracle会隐藏定义循环控制变量(即不需要人工定义循环控制变量),语法如下:
[color=red]
for counter in[reverse]
lower_bound..upper_bound loop
statement1;
statement2;
..........
end loop;
[/color]
注意:counter循环控制变量,oracle会隐藏定义,lower_bound和upper_bound分别对应于循环变量的下界值和上界值,默认情况下,当使用for循环时,每次循环时循环控制变量会自动增一;如果指定reverse选项,那么每次循环时循环变量会自动减一。示例如下:

declare
begin
for i in reverse 1..10 loop
dbms_output.put_line(i);
end loop;
end;
/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值