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

Bagaimana mengatasi ekspresi yang hilang ORA-00936

Deskripsi

ORA-00936 :ekspresi hilang adalah salah satu kesalahan umum yang harus dihadapi semua orang yang bekerja di Oracle SQL selama beberapa waktu. Ini biasanya terjadi ketika Anda menghilangkan hal penting dalam pernyataan Sql yaitu Anda meninggalkan bagian penting dari apa yang Anda coba jalankan

Referensi :Dokumentasi Oracle

Penyebab ORA-00936 :ekspresi hilang

Kesalahan Oracle ini terutama terkait dengan pernyataan SQL SELECT. Salah satu alasan yang jelas adalah daftar kolom pilihan tidak ada atau ekspresi di kolom yang dipilih tidak lengkap.

Periksa daftar untuk dijalankan untuk mengatasi kesalahan ekspresi yang hilang ORA-00936

(1) Itu terjadi ketika Anda lupa mencantumkan kolom  dalam pernyataan pilih

Select from mrp_details;

select from mrp_details;
ERROR at line 1:
ORA-00936: missing expression

Cara yang benar adalah daftar kolom yang ingin Anda pilih

Select col1,col2 from mrp_details; 

(2) Kami terkadang membuat kesalahan dalam penggunaan pernyataan Distinct. Pernyataan berikut akan gagal dengan ORA-00936

select distinct a, b,c,d, distinct e from tab_example
where b=’ABCD’ and c =1 and d= ‘JOHN’
ERROR at line 1:
ORA-00936: missing expression

Memiliki dua klausa yang berbeda tidak masuk akal dan memberikan kesalahan

Contoh lain

select a, b,c,d, distinct e from tab_example
where b=’ABCD’ and c =1 and d= ‘JOHN’
ERROR at line 1: ORA-00936: missing expression

berbeda dapat digunakan di awal saja

Jadi pernyataan yang benar adalah

select distinct a, b,c,d, e from tab_example
where b=’ABCD’ and c =1 and d= ‘JOHN’

(3) Kesalahan ini disebabkan ketika bagian dari ekspresi dihilangkan, beberapa contohnya adalah

select 2**8 from dual; 
select 2**8 from dual;
ERROR at line 1: ORA-00936: missing expression

** operator bekerja di PLSQL tetapi tidak di SQL, Kita perlu menggunakan fungsi Power untuk itu, Jadi cara yang benar adalah

select power(2,3) from dual;
POWER(2,3)
--------
8

(4) Contoh lain

select dept_name||' '|| from dept;
select dept_name||' '|| from dept
ERROR at line 1: ORA-00936: missing expression

Di sini Anda lupa menyebutkan nama kolom setelah operator penggabungan, SQL yang benar adalah

select dept_name||' '||dept_no from dept;

(5) Ketika Anda menambahkan koma tambahan dalam daftar kolom

select dept_no, dept_name, ,dept_location from dept_table;
select dept_no, dept_name, ,dept_location from dept_table;
ERROR at line 1: ORA-00936: missing expression

Jadi kita perlu memeriksa ulang pernyataan SQL ketika kita menemukan kesalahan ini dan pastikan kita melakukan kesalahan umum

(6) Kesalahan ini juga akan muncul jika Anda menghilangkan Dari dalam pernyataan SQL

select dept_no, dept_name, ,dept_location where dept_name like ‘A%’;
select dept_no, dept_name, ,dept_location where dept_name like ‘A%’;
ERROR at line 1: ORA-00936: missing expression

Di sini kami melewatkan untuk menyebutkan dari klausa. Pernyataan SELECT memiliki tiga bagian:yaitu:“SELECT->FROM->WHERE
Anda dapat menghilangkan klausa where tetapi pilih dan dari diperlukan

select dept_no, dept_name, ,dept_location from dept_table where dept_name like ‘A%’;

(7) Bisa juga terjadi pada pernyataan insert seperti di bawah ini

insert into table1 (col1,col2) values as select col1,col2 from table2;
ERROR at line 1: ORA-00936: missing expression

Kami tidak membutuhkan nilai seperti dalam pernyataan ini

insert into table1 (col1,col2) select col1,col2 from table2;

(8) Terkadang kita dapat  mencampuradukkan fungsi yang ditentukan pengguna dan fungsi Oracle, dan hal itu dapat menyebabkan sintaks yang membingungkan yang akan menghasilkan pesan kesalahan. Jadi, hindarilah

(9) Ada beberapa bug Oracle juga
(a) Bug:4567818 base Bug#:4192148 – tidak dipublikasikan di 9207
(b) Bug:4212516 (tidak dipublikasikan) di Oracle 10.1.0.4.0.
Dengan bug ini, kesalahan ORA-00936 muncul saat tampilan SELECT ON gagal. Pada dasarnya, ORA-00936 dilempar ketika tampilan SQL dibuat dari "buat atau ganti tampilan MY_VIEW sebagai pilih t.*,other_tab_col dari tab t, tab_lain". Ini menciptakan definisi tampilan yang salah di DBA_VIEWS, sehingga membuang ORA- 00936 dan kemungkinan core dumps. Untuk memperbaiki bug dan mengatasi ORA-00936, MetaLink menawarkan solusi ini untuk versi yang sesuai:
Perbaiki untuk 9.2.0.7 :Patch 4192148 tersedia untuk Solaris (64bit) dan Sistem Berbasis AIX5L (64-bit). Perbaikan untuk 10.1.0.4 :
Patch 4212516 tersedia untuk sebagian besar platform.

Singkatnya, ORA-00936 tidak ada ekspresi dapat diselesaikan dengan memeriksa pernyataan SQL Anda dengan cermat.

Artikel terkait
ORA-00911:karakter tidak valid
ORA-03113:akhir file pada saluran komunikasi
ORA-00257
ORA-27154:pembuatan posting/tunggu gagal saat startup
ORA-29913 dengan tabel eksternal
ora-20001 dalam Mengumpulkan statistik skema pada 11g(FND_HISTOGRAM_COLS)
Pengelola Bersamaan:cleanup_node gagal karena ORA-01427

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara memecahkan masalah ORA-02049 dan mengunci masalah secara umum dengan Oracle

  2. Bagaimana saya bisa mendapatkan jumlah hari antara 2 tanggal di Oracle 11g?

  3. Oracle dinamis DESC dan ASC diurutkan oleh

  4. Apakah saya perlu membuat indeks pada kunci asing di Oracle?

  5. Cara memberikan akses ke tampilan v$ (v$session ,v$instance)