oracle中的控制语句
一、条件语句
条件语句包含if else、case when
1.01、if else
语法:if之后 跟条件表达式,当该条件返回真时,将执行其后的语句,否则执行else后面的语句
例如:
set serveroutput on
declare num number;
begin
select count(*) into num from employee where emp_salary>5000;
if num>0 then
dbms_output.put_line('存在工资高于5000的员工');
else
dbms_output.put_line('不存在工资高于5000的员工');
end if;
end;
备注:set serveroutput on用于打开打印输出,默认的状态下是关闭的,若含有两种以上的情况,可以用elsif……then
1.02、case when
例如:
set serveroutput on
declare num number;
begin
select count(*) into num from employee where emp_salary>5000;
case
when num>0 then
dbms_output.put_line('存在工资高于5000的员工');
when num=0 then
dbms_output.put_line('不存在工资高于5000的员工');
end case;end;
备注:case when 的另一个用法
select name,sum(case when subject='数学' then score else 0 end) "数学" from scores group by name;二、循环语句
循环语句包含:无条件循环、while循环和for循环
2.01、 无条件循环
例如:
set serveroutput on
declare num number:=0;
v_name varchar2(20);
begin
loop
if num>4 then
exit;
end if;
num:=num+1;
select emp_name into v_name from employee where emp_id=num;
dbms_output.put_line(num||'号员工是'|| v_name);
end loop;
end;
结果:
1号员工是张三
2号员工是李四
3号员工是赵飞
4号员工是韩明
5号员工是王兰2.02、while循环
while循环也是利用loop循环的形式,只是在loop前加了条件
语句:
set serveroutput on
declare num number:=0;
v_name varchar2(20);
begin
while num<=4 loop
num:=num+1;
select emp_name into v_name from employee where emp_id=num;
dbms_output.put_line(num||'号员工是'|| v_name);
end loop;end;
结果:
1号员工是张三
2号员工是李四
3号员工是赵飞
4号员工是韩明5号员工是王兰2.03、for循环
for循环适用于循环次数确定的情况下
语句:
set serveroutput on
declare num number;
v_name varchar2(20);
begin
select count(*) into num from employee where emp_salary>5000;
for i in 1..num loop
select emp_name into v_name from employee where emp_id=i;
dbms_output.put_line(i||'号员工是'|| v_name);
end loop;end;
结果:
1号员工是张三2号员工是李四