Un SELECT INTO l'istruzione genererà un errore se restituisce qualcosa di diverso da 1 riga. Se restituisce 0 righe, otterrai un no_data_found eccezione. Se restituisce più di 1 riga, otterrai un too_many_rows eccezione. A meno che tu non sappia che ci sarà sempre esattamente 1 dipendente con uno stipendio superiore a 3000, non vuoi un SELECT INTO dichiarazione qui.
Molto probabilmente, si desidera utilizzare un cursore per scorrere (potenzialmente) più righe di dati (suppongo anche che si intendesse eseguire un join corretto tra le due tabelle anziché eseguire un prodotto cartesiano, quindi presumo che ci è un departmentID colonna in entrambe le tabelle)
BEGIN
FOR rec IN (SELECT EMPLOYEE.EMPID,
EMPLOYEE.ENAME,
EMPLOYEE.DESIGNATION,
EMPLOYEE.SALARY,
DEPARTMENT.DEPT_NAME
FROM EMPLOYEE,
DEPARTMENT
WHERE employee.departmentID = department.departmentID
AND EMPLOYEE.SALARY > 3000)
LOOP
DBMS_OUTPUT.PUT_LINE ('Employee Nnumber: ' || rec.EMPID);
DBMS_OUTPUT.PUT_LINE ('---------------------------------------------------');
DBMS_OUTPUT.PUT_LINE ('Employee Name: ' || rec.ENAME);
DBMS_OUTPUT.PUT_LINE ('---------------------------------------------------');
DBMS_OUTPUT.PUT_LINE ('Employee Designation: ' || rec.DESIGNATION);
DBMS_OUTPUT.PUT_LINE ('----------------------------------------------------');
DBMS_OUTPUT.PUT_LINE ('Employee Salary: ' || rec.SALARY);
DBMS_OUTPUT.PUT_LINE ('----------------------------------------------------');
DBMS_OUTPUT.PUT_LINE ('Employee Department: ' || rec.DEPT_NAME);
END LOOP;
END;
Presumo che tu stia solo imparando anche PL/SQL. Nel codice reale, non useresti mai dbms_output in questo modo e non dipenderebbe dal fatto che qualcuno veda i dati che scrivi in dbms_output buffer.