一、if条件语句
set serverout on;
declare n number:=1;
v varchar(20):='world';
begin
dbms_output.put_line('hello'||n||v);
end;
/ hello1world
declare emp_count number;
begin
select count(*) into emp_count from emp where sal >= 3000;
if(emp_count>0) then
dbms_output.put_line('有'||emp_count||'员工的基本薪资大于等于3000');
else
dbms_output.put_line('没有员工的基本薪资大于等于3000');
end if;
end;
有3个员工的基本薪资大于等于3000
if elseif else if :
SQL> declare emp_count number;
2 begin
3 select count(*) into emp_count from emp where sal >= 3000;
4 if(emp_count=1) then
5 dbms_output.put_line('有1个员工的基本薪资大于等于3000');
6 else if(emp_count>1) then
7 dbms_output.put_line('超过1个员工的基本薪资大于等于3000');
8 else
9 dbms_output.put_line('没有员工的基本薪资大于等于3000');
10 end if;
11 end if;
12 end;
13 /
超过1个员工的基本薪资大于等于3000 PL/SQL 过程已成功完成。
二、case when流程控制语句
SQL> declare emp_count number;
2 begin
3 select count(*) into emp_count from emp where sal >= 3000;
4 case emp_count
5 when 0 then dbms_output.put_line('没有员工的基本薪资大于等于3000');
6 when 1 then dbms_output.put_line('有1个员工的基本薪资大于等于3000');
7 when 2 then dbms_output.put_line('有2个员工的基本薪资大于等于3000');
8 when 3 then dbms_output.put_line('有3个员工的基本薪资大于等于3000');
9 else dbms_output.put_line('超过3个员工的基本薪资大于等于3000');
10 end case;
11 end;
12 /
有3个员工的基本薪资大于等于3000 PL/SQL 过程已成功完成。
三、循环语句
1.无条件循环 loop:
salgrade表:
现在循环grade从2到4,打印出最低薪资,和最高薪资:
SQL> declare g_id number:=2;
2 g_losal number;
3 g_hisal number;
4 begin
5 loop
6 if(g_id>4) then
7 exit;
8 end if;
9
10 select losal,hisal into g_losal, g_hisal from salgrade where grade = g_id;
11 dbms_output.put_line(g_id||'等级的最低薪资'||g_losal||',最高薪资'||g_hisal);
12
13 g_id := g_id + 1;
14 end loop;
15 end;
16 /
2等级的最低薪资1201,最高薪资1400
3等级的最低薪资1401,最高薪资2000
4等级的最低薪资2001,最高薪资3000 PL/SQL 过程已成功完成。
2.while循环:
SQL> declare g_id number:=2;
2 g_losal number;
3 g_hisal number;
4 begin
5 while(g_id<5) loop
6 select losal,hisal into g_losal, g_hisal from salgrade where grade = g_id;
7 dbms_output.put_line(g_id||'等级的最低薪资'||g_losal||',最高薪资'||g_hisal);
8
9 g_id := g_id + 1;
10 end loop;
11 end;
12 /
2等级的最低薪资1201,最高薪资1400
3等级的最低薪资1401,最高薪资2000
4等级的最低薪资2001,最高薪资3000 PL/SQL 过程已成功完成。
3、for循环:
SQL> declare g_losal number;
2 g_hisal number;
3 begin
4 for g_id in 2..4 loop
5 select losal,hisal into g_losal, g_hisal from salgrade where grade = g_id;
6 dbms_output.put_line(g_id||'等级的最低薪资'||g_losal||',最高薪资'||g_hisal);
7 end loop;
8 end;
9 /
2等级的最低薪资1201,最高薪资1400
3等级的最低薪资1401,最高薪资2000
4等级的最低薪资2001,最高薪资3000 PL/SQL 过程已成功完成。