Mantén la atención ya que en este post vas a encontrar el resultado que buscas.
Solución:
A SELECT INTO
La declaración arrojará un error si devuelve algo que no sea 1 fila. Si devuelve 0 filas, obtendrá un no_data_found
excepción. Si devuelve más de 1 fila, obtendrá un too_many_rows
excepción. A menos que sepa que siempre habrá exactamente 1 empleado con un salario superior a 3000, no desea un SELECT INTO
declaración aquí.
Lo más probable es que desee usar un cursor para iterar (potencialmente) varias filas de datos (también asumo que tenía la intención de hacer una unión adecuada entre las dos tablas en lugar de hacer un producto cartesiano, así que asumo que hay es un departmentID
columna en ambas tablas)
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;
Supongo que también estás aprendiendo PL/SQL. En código real, nunca usarías dbms_output
así y no dependería de que nadie vea los datos que escribes en el dbms_output
buffer.
Si te animas, tienes la habilidad dejar un ensayo acerca de qué te ha gustado de esta división.