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.