En SELECT INTO uttalandet kommer att ge ett fel om det returnerar något annat än 1 rad. Om den returnerar 0 rader får du en no_data_found undantag. Om den returnerar mer än 1 rad får du en too_many_rows undantag. Om du inte vet att det alltid kommer att finnas exakt 1 anställd med en lön som är högre än 3000, vill du inte ha en SELECT INTO uttalande här.
Troligtvis vill du använda en markör för att iterera över (potentiellt) flera rader med data (jag antar också att du tänkte göra en korrekt sammanfogning mellan de två tabellerna istället för att göra en kartesisk produkt så jag antar att det finns är ett departmentID kolumn i båda tabellerna)
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;
Jag antar att du bara lär dig PL/SQL också. I riktig kod skulle du aldrig använda dbms_output så här och skulle inte vara beroende av att någon ser data som du skriver till dbms_output buffert.