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.