A SELECT INTO операторът ще изведе грешка, ако върне нещо различно от 1 ред. Ако върне 0 реда, ще получите no_data_found изключение. Ако върне повече от 1 ред, ще получите too_many_rows изключение. Освен ако не знаете, че винаги ще има точно 1 служител със заплата по-голяма от 3000, не искате SELECT INTO изявление тук.
Най-вероятно искате да използвате курсор, за да преглеждате (потенциално) множество реда данни (предполагам също, че възнамерявате да направите правилно свързване между двете таблици, вместо да правите декартов продукт, така че предполагам, че има е departmentID колона в двете таблици)
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;
Предполагам, че просто изучавате PL/SQL. В реалния код никога не бихте използвали dbms_output като това и няма да зависи от това, че някой вижда данни, които записвате в dbms_output буфер.