Как написать код PL / SQL для расчета количества лет опыта для сотрудников с номерами 7788 и 7782 - PullRequest
0 голосов
/ 03 августа 2020

Напишите код PL / SQL, чтобы рассчитать количество лет опыта для сотрудников с номерами 7788 и 7782

, затем распечатайте информацию для сотрудника с самым старым опытом.

  • Напишите код, используя Reference% ROWTYPE.

  • Используйте соответствующие функции для даты и чисел, чтобы рассчитать опыт.

  • Распечатайте результат, как показано ниже:

The Oldest Employee Is: CLARK
His Years of Experience: 38

Это мой ответ, не знаю, что не так и есть ли

DECLARE 
    EmpInfo emp%ROWTYPE; 
    MaxEx number :=0; 
    EmployeeName emp.ename%TYPE; 
    ExNumber number; 
cursor oldex is select * from emp where EMP.EMPNO = 7788 or EMP.EMPNO = 7782 ; 
BEGIN OPEN oldex; 
    LOOP FETCH oldex into EmpInfo; 
    EXIT WHEN oldex%notfound; 
    ExNumber := (TO_NUMBER(TO_CHAR(SYSDATE,'YYYY')) - TO_NUMBER(TO_CHAR(EmpInfo.hiredate,'YYYY'))); 
    if ExNumber > MaxEx then MaxEx := ExNumber; 
    EmployeeName := EmpInfo.ename; 
END IF; 
END LOOP;
 
dbms_output.put_line('The oldest employee is: '|| EmployeeName); 
dbms_output.put_line('His year experiance is: '|| MaxEx); 
CLOSE oldex; 
END;

1 Ответ

0 голосов
/ 03 августа 2020

Вы не видите результатов, вероятно, потому, что вы не устанавливаете serveroutput. Пример:

 begin
   dbms_output.put_line('hello world');
 end;
 /

PL/SQL procedure successfully completed.

Где эта строка go? Что ж, он находится в буфере, и вам нужно сообщить своему sql клиенту, чтобы он проверял, что находится в буфере, и распечатывал его. Как это:

set serveroutput on
begin
 dbms_output.put_line('hello world');
end;
/

hello world


PL/SQL procedure successfully completed.

Используйте это, чтобы ваш блок видел ваш вывод. Я оставлю вам отладку кода.

...