Oracle中的控制语句

本文详细介绍了PL/SQL中的流程控制语句,包括条件语句(if-else及elsif)、case when分支以及循环语句(loop、while、for)。通过具体的例子展示了如何使用这些语句来实现复杂的业务逻辑,特别关注于处理数据库中员工信息的统计和查询。

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

条件语句

流程控制-if else

set serverout on;
declare employee_number number;
begin
 select count(*) into employee_count from employees where employee_age>30;
 if employee_count>10 then
 dbms_output.put_line('公司有年龄大于30的员工');
 else
 dbms_output.put_line('公司没有年龄大于30的员工');
 end if;
end

统计年龄大于30的员工信息,存在多个条件判断(elsif)时如下:

declare employee_number number;
begin
 select count(*) into employee_count from employees where employee_age>30;
 if employee_count=1 then
 dbms_output.put_line('公司有1名年龄大于30的员工');
 elsif employee_count>1 then
 dbms_output.put_line('公司有多年龄大于30的员工');
 else
 dbms_output.put_line('公司没有年龄大于30的员工');
 end if;
end

流程控制-case when分支

case when 与if else 有相同的效果。当需要匹配的情况较多时,可以使流程控制更加清晰

declare employee_number number;
begin
 select count(*) into employee_count from employees where employee_age>30;
 case employee_count
  when 1 then
 dbms_output.put_line('公司有1名年龄大于30的员工');
 when 0 then
 dbms_output.put_line('公司没有年龄大于30的员工');
 else
 dbms_output.put_line('公司有多名年龄大于30的员工');
 end case
end

循环语句

无条件循环-loop

declare v_id number :=0;
v_name varchar2(20);
begin
	loop
	if v_id>=5 then
	exit;--退出循环
	end if;
	v_id:=v_id+1;

	select empolyee_name into v_name from employees where employee_id=v_id;

	dbms_output.put_line(v_id||'号员工是'||v_name);
	end loop;
end;

除了利用if判断退出循环外,还可以exit when的形式跳出循环

while循环

while 条件判断 loop
循环操作
end loop;

while指定循环条件,其后仍然跟loop,此处的loop循环与无条件循环中的loop完全相同,只是增加了while条件而已

declare v_id number :=0;
v_name varchar2(20);
begin
while v_id>=5
loop

v_id:=v_id+1;

select empolyee_name into v_name from employees where employee_id=v_id;

dbms_output.put_line(v_id||'号员工是'||v_name);
end loop;
end;

for循环

declare v_id number :=0;
v_name varchar2(20);
begin
for v_id in 1..5
loop

v_id:=v_id+1;

select empolyee_name into v_name from employees where employee_id=v_id;

dbms_output.put_line(v_id||'号员工是'||v_name);
end loop;
end;

1…5 表示1~5的所有整数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值