A SELECT INTO
-Anweisung löst einen Fehler aus, wenn sie etwas anderes als 1 Zeile zurückgibt. Wenn es 0 Zeilen zurückgibt, erhalten Sie ein no_data_found
Ausnahme. Wenn mehr als eine Zeile zurückgegeben wird, erhalten Sie too_many_rows
Ausnahme. Sofern Sie nicht wissen, dass es immer genau 1 Mitarbeiter mit einem Gehalt über 3000 geben wird, möchten Sie kein SELECT INTO
Erklärung hier.
Höchstwahrscheinlich möchten Sie einen Cursor verwenden, um (möglicherweise) mehrere Datenzeilen zu durchlaufen (ich gehe auch davon aus, dass Sie beabsichtigten, eine ordnungsgemäße Verknüpfung zwischen den beiden Tabellen herzustellen, anstatt ein kartesisches Produkt zu erstellen, also gehe ich davon aus, dass dort ist eine departmentID
Spalte in beiden 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;
Ich gehe davon aus, dass Sie gerade auch PL/SQL lernen. In echtem Code würden Sie niemals dbms_output
verwenden so und würde nicht davon abhängen, dass irgendjemand Daten sieht, die Sie in dbms_output
schreiben Puffer.