не знаю ,почему код не работает oracle live sql, получая ошибки типа ORA-06512: в «SYS.DBMS_SQL», строка 1721

#oracle #plsql

Вопрос:

 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;
/
 

Ответ №1:

Если DEPT таблица не содержит ни одной строки, этот запрос будет возвращен TOO_MANY_ROWS . Почему вы объединяетесь EMP и DEPT ? Должно было быть просто

 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 ).