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.