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

Alasan untuk mendapatkan ORA-01422:pengambilan yang tepat mengembalikan lebih dari jumlah baris yang diminta

Pengecualian ini dimunculkan setiap kali pernyataan SELECT INTO dieksekusi dan menemukan lebih dari satu baris. Pernyataan SELECT INTO mengharapkan untuk menemukan tepat satu baris, tidak lebih atau kurang - jika tidak, pengecualian akan muncul.

Dalam contoh Anda:

select PK into wsID from RPT_WEBSVC
where KEYVALUE = 'GetMachineNameList'
and category_fk = catID;

tampaknya hanya ada satu baris per kombinasi (KEYVALUE, CATEGORY_FK), tetapi kenyataannya tidak demikian. Jika seharusnya hanya ada satu maka tabel harus memiliki batasan unik pada kolom tersebut:

alter table RPT_WEBSVC add constraint RPT_WEBSVC_UK
    unique (KEYVALUE, CATEGORY_FK);

Itu akan mencegah seseorang (atau beberapa proses) menambahkan baris yang sama lagi. Tentu saja Anda perlu menghapus duplikat tabel sebelum Anda dapat menambahkan batasan itu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kembalikan koleksi dari fungsi yang dikemas untuk digunakan di pilih

  2. ODP.NET Oracle.ManagedDataAcess acak kesalahan ORA-12570

  3. Memasukkan ke Oracle dan mengambil ID urutan yang dihasilkan

  4. SQL Query, Rata-rata naik dan pasangan yang telah naik paling banyak puncak

  5. Tidak dapat menjalankan IntelliJ IDEA CE 12 dengan Ubuntu Oracle Java 8