You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 07:05:19