条件语句

流程控制-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的所有整数

posted on 2018-02-05 16:29  NE_STOP  阅读(0)  评论(0编辑  收藏  举报  来源