/**
if条件控制语句
*/
declare
sal number := 500;
comm number;
begin
if sal < 100 then
comm := 0;
elsif sal < 600 then
comm := sal*0.1;
elsif sal < 1000 then
comm := sal*0.2;
else
comm := sal*0.3;
end if;
dbms_output.put_line(comm);
end;
结果:50
/**
case条件控制语句
*/
declare
v_sal number := 1000;
v_tax number;
begin
case
when v_sal < 1500 then
v_tax := v_sal*0.1;
when v_sal < 2500 then
v_tax := v_sal*0.2;
when v_sal < 3500 then
v_tax := v_sal*0.3;
end case;
dbms_output.put_line(v_tax);
end;
结果:100
/**
case条件控制语句
*/
declare
v_name varchar2(40);
begin
select ename into v_name from emp where empno='7788';
case v_name
when 'SCOTT' then
dbms_output.put_line('SCOTT');
when 'SMITH' then
dbms_output.put_line('SMITH');
end case;
end;
结果:SCOTT
/**
loop循环控制语句
*/
declare
v_index number := 10;
begin
loop
exit when v_index = 0;
insert into teacher values(v_index, 'name'||v_index, v_index); --向表中插入数据
v_index := v_index -1;
end loop;
commit;
end;
结果:向teacher表中插入10条数据
/**
while循环控制语句
*/
declare
v_index number := 10;
begin
while v_index > 0
loop
delete from teacher where id=v_index; --删除表中数据
v_index := v_index - 1;
end loop;
commit;
end;
结果:删除teacher表中插10条数据
/**
for循环控制语句
*/
begin
for i in 1..10 loop
dbms_output.put_line(i);
end loop;
for i in reverse 1..10 loop
dbms_output.put_line(i);
end loop;
end;
结果:先输出1到10,再输出10到1
/**
for嵌套循环控制语句
*/
declare
result integer;
begin
<<outer>>
for i in 1..10 loop
<<inner>>
for j in 1..10 loop
dbms_output.put_line('i值:'||i||' j值:'||j);
exit when j = 5; --跳出内层循环
exit outer when i = 5; --跳出外层循环
end loop;
end loop;
end;