/*
SQL语句
select to_char(hiredate,'yyyy') from emp;
-->光标-->循环-->退出条件:notfound
变量:1.初始值,2.如何得到每年入职的员工人数
count80 number := 0;
count81 number := 0;
count82 number := 0;
count87 number := 0;
*/
set serveroutput on
declare
--定义光标
cursor c_emp is select to_char(hiredate,'yyyy') from emp;
p_hiredate varchar2(4);
--每年入职的员工人数
count80 number := 0;
count81 number := 0;
count82 number := 0;
count87 number := 0;
begin
--打开光标
open c_emp;
loop
--取出一个员工的入职年份
fetch c_emp into p_hiredate;
exit when c_emp%notfound;
--判断入职年份
if p_hiredate = '1980' then count80 :=count80+1;
elsif p_hiredate = '1981' then count81 :=count81+1;
elsif p_hiredate = '1982' then count82 :=count82+1;
else count87 := count87+1;
end if
end loop;
--输出结果
dbms_output.put_line('Total'||(count80+count81+count82+count87));
dbms_output.put_line('1980'||count80);
dbms_output.put_line('1981'||count81);
dbms_output.put_line('1982'||count82);
dbms_output.put_line('1987'||count87);
--关闭光标
close c_emp;
end;
/
/**
统计每年入职的员工
*/
set serveroutput on
declare
-- 定义光标
cursor cemp is select to_char(hiredate,'yyyy') from emp;
phiredate varchar2(4);
--每年入职的员工数
count80 number := 0;
count81 number := 0;
count82 number := 0;
count87 number := 0;
begin
-- 打开光标
open cemp;
loop
--取出一个员工的入职年份
fetch cemp into phiredate;
exit when cemp%notfound;
--判断入职年份
if phiredate = '1980' then count80:=count80+1;
elsif phiredate = '1981' then count81:=count81+1;
elsif phiredate = '1982' then count82:=count82+1;
else count87:=count87+1;
end if;
end loop;
-- 关闭光标
close cemp;
dbms_output.put_line('Total:'||(count80+count81+count82+count87));
dbms_output.put_line('1980:'||count80);
dbms_output.put_line('1981:'||count81);
dbms_output.put_line('1982:'||count82);
dbms_output.put_line('1987:'||count87);
end;
/
set serveroutput on
declare
cursor cemp is select to_char(hiredate,'yyyy') from emp;
phiredate varchar2(4);
count80 number := 0;
count81 number := 0;
count82 number := 0;
count87 number := 0;
begin
open cemp;
loop
fetch cemp into phiredate;
exit when cemp%notfound;
if phiredate = '1980' then count80:=count80+1;
elsif phiredate = '1981' then count80:=count81+1;
elsif phiredate = '1982' then count80:=count82+1;
else count87:=count87+1;
end if;
close cemp;
dbms.output.put_line();
end;
/
set serveroutput on
declare
cursor cm1 is select to_char(e.hiredate,'yyyy') from emp e;
pdate VARCHAR2(4);
count80 number:=0;
count81 number:=0;
count82 number:=0;
begin
open cm1;
loop
fetch cm1 into pdate;
exit when cm1%notfound;
if pdate='1980' then count80:=count80+1;
elsif pdate='1981' then count81:=count81+1;
elsif pdate='1982' then count82:=count82+1;
else count82:=count82+1;
end if;
end loop;
close cm1;
dbms_output.put_line('总共入职:'||(count80+count81+count82));
dbms_output.put_line('1980年入职:'||count80);
end;
/
统计每年入职的员工人数:需求分析过程
set serveroutput on
declare
-- 定义光标
cursor cemp is select to_char(hiredate,'yyyy') from emp;
phiredate varchar2(4);
-- 每年入职的员工人数
count80 number:=0;
count81 number:=0;
count82 number:=0;
count87 number:=0;
begin
open cemp;
loop
-- 取出员工的入职年份
fetch cemp into phiredate;
exit when cemp%notfound;
-- 判断入职年份
if phiredate='1980' then count80:= count80+1;
elsif phiredate='1981' then count81:=count81+1;
elsif phiredate='1982' then count82:=count82+1;
else count87:=count87+1;
end if;
end loop;
close cemp;
--输出结果
dbms_output.put_line('Total:'||(count80+count81+count82+count87));
dbms_output.put_line('1980:'||count80);
dbms_output.put_line('1981:'||count81);
dbms_output.put_line('1982:'||count82);
dbms_output.put_line('1987:'||count87);
end;
/