ORA-00904 Ralat: Pengecam Tidak Sah
Masalah:
Apabila cuba mendapatkan data daripada jadual menggunakan pertanyaan mudah di mana klausa WHERE menyertakan syarat pada nilai lajur, yang anda temui ralat ORA-00904 menunjukkan pengecam tidak sah.
Sebagai contoh, anda mempunyai jadual bernama reg1 dibuat dengan lajur berikut:
create table reg1 ( fname varchar2(30), lname varchar2(30), addr varchar2(30), mail varchar2(30), occu varchar2(30), uname varchar2(30), passwd varchar2(30) );
Walau bagaimanapun, apabila melaksanakan pertanyaan untuk mengambil yang pertama nama (fname) dan nama akhir (lname) pengguna dengan nama pengguna 'bbb' seperti:
select fname, lname from reg1 where uname="bbb";
Anda menerima ralat ORA-00904: "bbb": pengecam tidak sah.
Jawapan:
Ralat berlaku kerana nilai yang anda bandingkan dalam klausa WHERE tidak disertakan dalam petikan tunggal. Dalam Oracle, apabila membandingkan nilai rentetan, anda perlu memetiknya dengan petikan tunggal untuk menunjukkan bahawa ia adalah literal.
Untuk menyelesaikan isu, cuma tambah petikan tunggal di sekitar nilai 'bbb':
select fname, lname from reg1 where uname='bbb';
Dengan pembetulan ini, pertanyaan akan berjaya mengambil data untuk pengguna dengan nama pengguna 'bbb', kerana perbandingan kini dianggap betul sebagai rentetan literal perbandingan.
Atas ialah kandungan terperinci Mengapa Saya Mendapat ORA-00904: 'pengecam tidak sah' Apabila Menyoal Jadual Oracle Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!