Um
SELECT INTO A instrução lançará um erro se retornar algo diferente de 1 linha. Se retornar 0 linhas, você receberá um no_data_found exceção. Se retornar mais de 1 linha, você receberá um too_many_rows exceção. A menos que você saiba que sempre haverá exatamente 1 funcionário com um salário maior que 3.000, você não deseja um SELECT INTO declaração aqui. Provavelmente, você deseja usar um cursor para iterar (potencialmente) várias linhas de dados (também estou assumindo que você pretendia fazer uma junção adequada entre as duas tabelas em vez de fazer um produto cartesiano, então estou assumindo que há é um
departmentID coluna em ambas as tabelas) 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;
Estou assumindo que você está apenas aprendendo PL/SQL também. Em código real, você nunca usaria
dbms_output assim e não dependeria de ninguém ver os dados que você escreve no dbms_output amortecedor.