PL/SQL中如何按年份展示对应入职员工的详细信息?
PL/SQL代码修改:按年份展示入职员工详情
你的问题出在内层游标调用时传了固定值8,这只会查询入职年份为8年的员工(显然不存在),所以没有显示任何员工详情。只需要把参数改成当前循环的年份e_year.YEAR即可。
修改后的完整代码:
DECLARE CURSOR c_year IS SELECT EXTRACT (YEAR FROM hire_date) YEAR, COUNT(*) PERSON FROM employees GROUP BY EXTRACT (YEAR FROM hire_date) ORDER BY 1 ASC; CURSOR c_emp (thisyear NUMBER) IS SELECT employee_id ID, first_name, last_name , hire_date FROM employees WHERE EXTRACT(YEAR FROM hire_date) = thisyear ORDER BY 1 ASC; BEGIN FOR e_year IN c_year LOOP DBMS_OUTPUT.PUT_LINE('Acquire since '|| e_year.YEAR || ' ('||e_year.PERSON || ' persons) =========='); -- 把固定值8替换为当前循环的年份e_year.YEAR FOR e_emp IN c_emp(e_year.YEAR) LOOP DBMS_OUTPUT.PUT_LINE('ID: '||e_emp.ID||' '||e_emp.first_name||' '||e_emp.last_name); END LOOP; END LOOP; END; /
修改后执行效果示例:
Acquire since 2001 (1 persons) ==========
ID: 100 Steven King
Acquire since 2002 (7 persons) ==========
ID: 101 Neena Kochhar
ID: 102 Lex De Haan
...(后续年份对应员工详情)
内容的提问来源于stack exchange,提问作者Simonziety
相关产品推荐
相关产品推荐

