Un SELECT INTO
L'instruction génère une erreur si elle renvoie autre chose qu'une ligne. S'il renvoie 0 lignes, vous obtiendrez un no_data_found
exception. S'il renvoie plus d'une ligne, vous obtiendrez un too_many_rows
exception. A moins que vous ne sachiez qu'il y aura toujours exactement 1 employé avec un salaire supérieur à 3000, vous ne voulez pas de SELECT INTO
déclaration ici.
Très probablement, vous souhaitez utiliser un curseur pour parcourir (potentiellement) plusieurs lignes de données (je suppose également que vous aviez l'intention de faire une jointure appropriée entre les deux tables plutôt que de faire un produit cartésien, donc je suppose qu'il y a est un departmentID
colonne dans les deux tableaux)
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;
Je suppose que vous apprenez également PL/SQL. Dans le vrai code, vous n'utiliseriez jamais dbms_output
comme ceci et ne dépendrait pas de quiconque voyant les données que vous écrivez dans le dbms_output
tampon.