Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

PL/SQL ORA-01422:pengambilan yang tepat mengembalikan lebih dari jumlah baris yang diminta

Sebuah SELECT INTO pernyataan akan menimbulkan kesalahan jika mengembalikan apa pun selain 1 baris. Jika mengembalikan 0 baris, Anda akan mendapatkan no_data_found pengecualian. Jika mengembalikan lebih dari 1 baris, Anda akan mendapatkan too_many_rows pengecualian. Kecuali Anda tahu bahwa akan selalu ada tepat 1 karyawan dengan gaji lebih besar dari 3000, Anda tidak ingin SELECT INTO pernyataan di sini.

Kemungkinan besar, Anda ingin menggunakan kursor untuk mengulangi (berpotensi) beberapa baris data (saya juga berasumsi bahwa Anda bermaksud melakukan penggabungan yang tepat antara dua tabel daripada melakukan produk Cartesian jadi saya berasumsi bahwa ada adalah departmentID kolom di kedua tabel)

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;

Saya berasumsi bahwa Anda juga baru belajar PL/SQL. Dalam kode sebenarnya, Anda tidak akan pernah menggunakan dbms_output seperti ini dan tidak akan bergantung pada siapa pun yang melihat data yang Anda tulis ke dbms_output penyangga.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle Cloud:Membuat Database Autonomous Transaction Processing (ATP)

  2. SIN() Fungsi di Oracle

  3. Bagaimana saya bisa mendapatkan nama kolom dari tabel di Oracle?

  4. Dapatkan hasil teratas untuk setiap grup (di Oracle)

  5. Oracle 12c DIIDENTIFIKASI OLEH NILAI