set serveroutput on
delcare
begin
cursor cemp is select to char(hiredate,'yyyy') from emp;
pdiredate vachar2(4);
count80 number=0;
count81 number=0;
count82 number=0;
打开光标
open emp;
循环
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 phiredate='1987' then count87=count87+1;
end if;
end loop;
关闭关闭
close emp;
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;
计数器只初始化一次,光标是一个集合。在loop循环里边,每次循环取出一条记录,比如第一次循环,取出的记录是1980年的,那么count1就+1(由于count1初始值为0,所以此时count1的值1),然后就执行下一次循环(执行了if就不执行elsif和else了),第二次循环如果取出的还是1980年的,那count1就+1(此时count1的值为2).其它的计数器就不加。以此类推,一共循环14次。循环结束后,四个计数器都有值了