PL/SQL:两个表之间的联接错误

PL/SQL:两个表之间的联接错误,sql,join,plsql,Sql,Join,Plsql,我有一个任务,其中我必须使用光标显示来自两个不同表的信息。我试着用我们以前做过的一个例子来做,但它似乎不起作用!下面提到的是我必须从中获取记录并显示它们的两个表 “Emp”表 部门表 我想显示他们工作的所有员工编号、姓名、工资、部门名称和部门所在地 以下是我所做的: set serveroutput on; DECLARE CURSOR staff_cursor IS SELECT e.empno,e.ename,e.sal, d.dname, d.dloc FROM emp e,

我有一个任务,其中我必须使用光标显示来自两个不同表的信息。我试着用我们以前做过的一个例子来做,但它似乎不起作用!下面提到的是我必须从中获取记录并显示它们的两个表

“Emp”表

部门表

我想显示他们工作的所有员工编号、姓名、工资、部门名称和部门所在地

以下是我所做的:

 set serveroutput on;
DECLARE
  CURSOR staff_cursor IS
  SELECT e.empno,e.ename,e.sal, d.dname, d.dloc FROM emp e, dept d
  WHERE e.deptno = d.deptno;
  v_eno emp.empno%type;
  v_lname emp.ename%type;
  v_esal emp.sal%type;
  v_ddname dept.dname%type;
  v_dloc dept.dloc%type;

BEGIN
  DBMS_OUTPUT.PUT_LINE ('******************');
  OPEN staff_cursor;
  FETCH staff_cursor into v_eno, v_lname, v_esal, v_ddname, v_dloc;
  WHILE staff_cursor%found LOOP
     DBMS_OUTPUT.PUT_LINE (v_eno);
     DBMS_OUTPUT.PUT_LINE (v_lname);
     DBMS_OUTPUT.PUT_LINE (v_esal);
     DBMS_OUTPUT.PUT_LINE ('******************');
     DBMS_OUTPUT.PUT_LINE (v_ddname);
     DBMS_OUTPUT.PUT_LINE (v_dloc);

     FETCH staff_cursor into v_eno, v_lname, v_esal, v_ddname, v_dloc;
  END LOOP;
  CLOSE staff_cursor;
END;

它给了我关于D.DLOC无效标识符的错误信息。我不明白是什么问题,我希望有人能帮我解决。

您的光标确实选择了表
dept d
d.dloc
,但在您的屏幕截图中它被命名为
loc

CURSOR staff_cursor IS
  SELECT e.empno, e.ename, e.sal, d.dname, d.loc
  -- ...

请停止使用隐式连接语法(逗号分隔的
FROM
子句),优先显式列出连接(
FROM emp e join dept d ON e.deptno=d.deptno
),谢谢!这很有效。。