EEN SELECT INTO statement zal een foutmelding geven als het iets anders dan 1 rij retourneert. Als het 0 rijen retourneert, krijg je een no_data_found uitzondering. Als het meer dan 1 rij retourneert, krijg je een too_many_rows uitzondering. Tenzij je weet dat er altijd precies 1 werknemer zal zijn met een salaris hoger dan 3000, wil je geen SELECT INTO verklaring hier.
Hoogstwaarschijnlijk wilt u een cursor gebruiken om over (mogelijk) meerdere rijen met gegevens te itereren (ik neem ook aan dat u van plan was een goede verbinding tussen de twee tabellen te maken in plaats van een Cartesiaans product te doen, dus ik neem aan dat er is een departmentID kolom in beide tabellen)
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;
Ik neem aan dat je ook net PL/SQL aan het leren bent. In echte code zou je nooit dbms_output . gebruiken op deze manier en zou niet afhankelijk zijn van iemand die gegevens ziet die u naar de dbms_output schrijft buffer.