条件语句
流程控制-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的所有整数
本文来自博客园,作者:NE_STOP,转载请注明原文链接:https://www.cnblogs.com/alineverstop/p/18004695