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

ORA-00904 saat memasukkan/meminta data dari tabel

Sepertinya Anda menentukan nama kolom di bawah tanda kutip di DDL Anda.

Oracle menganggap pengidentifikasi di bawah tanda kutip sebagai peka huruf besar/kecil, jadi membuat tabel dengan nama kolom sebagai "tubuh" atau "tahun" tidak akan menyelesaikan badan atau tahun dalam kueri Anda, karena ketika Anda menghilangkan tanda kutip, itu mempertimbangkan varian huruf besar.

Jadi ketika Anda memiliki ini:

 create table driver_case (registration varchar2(60), 
                      make varchar2(60),
                      model varchar2(60),
                      gvw number,
                      "year" number, 
                      "body" varchar2(60));

lalu coba lakukan

select year, body from driver_case

kemudian Oracle mencoba menemukan kolom "TAHUN", "BODY" (ingat, tanpa pengenal tanpa tanda kutip akan dikonversi ke huruf besar) yang tidak sama dengan "tahun", "tubuh" di tabel Anda.

Solusi Anda?

  • Jangan sebutkan nama kolom di bawah tanda kutip di DDL
  • Jika Anda mengabaikan poin di atas, maka Anda harus sebutkan nama kolom di bawah tanda kutip di semua pernyataan DML Anda.

Saya mendemonstrasikan poin di atas dalam SQL Fiddle ini



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perubahan Tabel Pemantauan di Oracle

  2. Bagaimana Anda bisa menjalankan kueri yang sama beberapa kali menggunakan loop di PL/SQL?

  3. Pengecualian format Tanggal Oracle di Layanan Pelaporan SQL Server

  4. Salin baris dan ubah sebagian kecil kolom?

  5. Hibernate mengembalikan daftar null meskipun SQL yang dieksekusi mengembalikan nilai