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

编写PLSQL块查询EMP表中员工关联的去重部门ID及对应名称并校验有效性

PLSQL 部门ID匹配查询实现脚本

需求说明

  • 提取EMP表中所有分配给员工的不重复部门ID
  • 匹配DEPT表查询对应部门名称
  • 输出规则:
    • 有效部门ID输出格式:Dept ID:*** is 部门名称
    • 无效部门ID输出格式:Dept ID:*** is not a valid ID

实现代码

DECLARE
    -- 声明游标:关联EMP去重部门ID和DEPT表部门名称
    CURSOR c_dept_info IS
        SELECT DISTINCT e.deptno AS dept_id, d.dname AS dept_name
        FROM emp e
        LEFT JOIN dept d ON e.deptno = d.deptno;
    -- 声明行变量存储游标查询结果
    v_dept_row c_dept_info%ROWTYPE;
BEGIN
    DBMS_OUTPUT.PUT_LINE('Output');
    -- 遍历游标
    OPEN c_dept_info;
    LOOP
        FETCH c_dept_info INTO v_dept_row;
        EXIT WHEN c_dept_info%NOTFOUND;
        -- 判断部门是否有效
        IF v_dept_row.dept_name IS NOT NULL THEN
            DBMS_OUTPUT.PUT_LINE('Dept ID:' || v_dept_row.dept_id || ' is ' || v_dept_row.dept_name);
        ELSE
            DBMS_OUTPUT.PUT_LINE('Dept ID:' || v_dept_row.dept_id || ' is not a valid ID');
        END IF;
    END LOOP;
    CLOSE c_dept_info;
END;
/

代码说明

  • 运行前请先执行SET SERVEROUTPUT ON;开启输出开关,否则看不到打印内容
  • 用左连接关联EMP和DEPT表,一次性拿到所有去重的部门ID和对应的部门名称,避免循环内查询降低效率
  • 用游标遍历查询结果,通过判断部门名称是否为空区分有效/无效ID,无需额外捕获异常,逻辑更简洁

输出示例

Output
Dept ID:10 is ACCOUNTING
Dept ID:20 is RESEARCH
Dept ID:30 is SALES
Dept ID:40 is not a valid ID

内容的提问来源于stack exchange,提问作者Arsha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:15:03