一、if条件语句
1 set serverout on; 2 declare n number:=1; 3 v varchar(20):='world'; 4 begin 5 dbms_output.put_line('hello'||n||v); 6 end; 7 / 8 9 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 过程已成功完成。