唐;不知道为什么代码不起作用 Oracle Live SQL,收到类似 ORA-06512 的错误:在 "SYS.DBMS_SQL" 处,第 1721 行


DECLARE 
v_annual_salary NUMBER;

BEGIN
SELECT SAL * 12 INTO v_annual_salary
FROM EMP,DEPT
WHERE EMPNO = 7722;

DBMS_OUTPUT.PUT_LINE ('Annual Salary of 7722 is ' || TO_CHAR(v_annual_salary));
END;
/

除非DEPT表包含单行,否则此查询将返回TOO_MANY_ROWS。为什么交叉加入EMPDEPT?应该只是

SQL> declare
2    v_annual_salary number;
3  begin
4    select sal * 12
5      into v_annual_salary
6      from emp
7      where empno = 7934;
8
9    dbms_output.put_line('Annual salary of 7934 is ' || to_char(v_annual_salary));
10  end;
11  /
Annual salary of 7934 is 15600
PL/SQL procedure successfully completed.
SQL>

(我的EMP表中没有EMPNO = 7722的员工,所以我使用了7934(。

最新更新