pl/sql 查询以通过 deptno 查找经理名称

Posted

技术标签:

【中文标题】pl/sql 查询以通过 deptno 查找经理名称【英文标题】:pl/sql query to find out the manager name by deptno 【发布时间】:2017-03-20 06:17:36 【问题描述】:

pl/sql 查询通过 deptno 查找经理名称

DECLARE
V_ENAME EMP.ENAME%TYPE; 
BEGIN 
FOR I IN (SELECT distinct  DEPTNO FROM EMP) 
LOOP 
SELECT ENAME INTO V_ENAME FROM EMP 
 WHERE JOB='MANAGER' AND DEPTNO=I.DEPTNO; 
DBMS_OUTPUT.PUT_LINE('THE NAME OF THE MANAGER IN '||I.DEPTNO||' IS '||V_ENAME);
END LOOP;
END;

【问题讨论】:

问题是什么? 没有 PL/SQL 查询之类的东西。 【参考方案1】:

工作正常

DECLARE
V_ENAME EMP.ENAME%TYPE; 
BEGIN 
FOR I IN (SELECT distinct  DEPTNO FROM EMP) 
LOOP 
SELECT ENAME INTO V_ENAME FROM EMP 
WHERE JOB='MANAGER' AND DEPTNO=I.DEPTNO; 
DBMS_OUTPUT.PUT_LINE('THE NAME OF THE MANAGER IN DEPARTMENT '||I.DEPTNO||' IS '||V_ENAME);
END LOOP;
END;

打印

THE NAME OF THE MANAGER IN DEPARTMENT 30 IS BLAKE THE NAME OF THE MANAGER IN DEPARTMENT 20 IS JONES THE NAME OF THE MANAGER IN DEPARTMENT 10 IS CLARK

【讨论】:

【参考方案2】:

由于我不知道这个线程的意义何在,我将提供简单的 SQL 查询来执行问题中所要求的 - 获取部门的 deptno 和经理的姓名(使用标量子查询)。

select d.deptno,
       (select e.ename
          from emp e
         where e.deptno = d.deptno
           and e.job = 'MANAGER') manager
  from dept d;

这里没有理由使用 PL/SQL。

【讨论】:

以上是关于pl/sql 查询以通过 deptno 查找经理名称的主要内容,如果未能解决你的问题,请参考以下文章

PL SQL 查询以查找与列表中的所有值匹配的标识符列表

PL/SQL练习自定义异常

PL/SQL查询,字段名添加中文别名,查询结果的字段名会显示问号,处理方法:

使用 SQL 或 PL/SQL 对多个表中的列和表名进行动态查询

PL/SQL 触发器得到一个变异表错误

PL/SQL Developer实现双击table表名查询