Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

PL / SQL ORA-01422:tìm nạp chính xác trả về nhiều hơn số hàng được yêu cầu

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hàm NLS_UPPER () trong Oracle

  2. Cách khai báo ngoại lệ do người dùng xác định bằng biến ngoại lệ trong cơ sở dữ liệu Oracle

  3. Truy vấn Oracle đơn giản:chữ không khớp với chuỗi định dạng

  4. 2 cách để có được một ngày trong Oracle

  5. Làm cách nào để xuất kết quả truy vấn sang Excel trong Oracle SQL Developer?