A SELECT INTO
câu lệnh sẽ thông báo lỗi nếu nó trả về bất kỳ thứ gì khác ngoài 1 hàng. Nếu nó trả về 0 hàng, bạn sẽ nhận được no_data_found
ngoại lệ. Nếu nó trả về nhiều hơn 1 hàng, bạn sẽ nhận được too_many_rows
ngoại lệ. Trừ khi bạn biết rằng sẽ luôn có chính xác 1 nhân viên có mức lương lớn hơn 3000, bạn không muốn SELECT INTO
tuyên bố ở đây.
Rất có thể, bạn muốn sử dụng con trỏ để lặp lại (có khả năng) nhiều hàng dữ liệu (Tôi cũng giả định rằng bạn dự định thực hiện một phép nối thích hợp giữa hai bảng hơn là thực hiện một sản phẩm Descartes, vì vậy tôi giả định rằng ở đó là một departmentID
trong cả hai bảng)
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;
Tôi giả định rằng bạn cũng đang học PL / SQL. Trong mã thực, bạn sẽ không bao giờ sử dụng dbms_output
như thế này và sẽ không phụ thuộc vào việc bất kỳ ai nhìn thấy dữ liệu mà bạn ghi vào dbms_output
đệm.