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

ORA-01036:nama/nomor variabel ilegal saat menjalankan kueri melalui C#

Akar penyebabnya

Di Oracle Anda memiliki tiga jenis pernyataan SQL (dan juga ada blok PL/SQL):

  • Pernyataan dalam Bahasa Definisi Data (DDL). Pernyataan-pernyataan ini memodifikasi struktur database. Mereka biasanya mulai dengan kata kerja "ALTER" atau "CREATE"
  • Pernyataan dalam Bahasa Modifikasi Data (DML). Pernyataan di sana memodifikasi konten di dalam tabel, membiarkan struktur setiap tabel tidak dimodifikasi. Pernyataan ini biasanya dimulai dengan "INSERT", "MERGE" atau "DELETE".
  • Pernyataan dalam apa yang saya sebut "bahasa kueri" (sepertinya tidak ada nama kanonik untuk ini). Pernyataan ini dimulai dengan kata kerja "PILIH".

Variabel binding di Oracle hanya diperbolehkan di beberapa tempat khusus di DML dan pernyataan kueri. Anda mencoba menggunakan variabel bind di tempat yang tidak mengizinkannya. Karenanya kesalahannya.

Solusi

Bangun pernyataan Anda tanpa variabel pengikat. Buat string kueri lengkap alih-alih menggunakan rangkaian string.

Jika Anda ingin membersihkan input sebelum menggabungkan string, gunakan paket DBMS_ASSERT.

Latar Belakang

Variabel bind hanya dapat digunakan ketika Oracle dapat membuat rencana kueri tanpa mengetahui nilai variabel. Untuk pernyataan DDL, tidak ada rencana kueri. Oleh karena itu, variabel ikat tidak diperbolehkan.

Dalam pernyataan DML dan kueri, variabel ikat hanya diperbolehkan, bila digunakan di dalam tuple (mengenai teori himpunan yang mendasarinya), yaitu ketika nilai akan dibandingkan dengan nilai dalam tabel atau saat nilai akan dimasukkan ke dalam tabel . Mereka tidak diperbolehkan untuk mengubah struktur rencana eksekusi (misalnya mengubah tabel target atau mengubah jumlah perbandingan).



  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 Membuat Array Asosiatif Di Database Oracle

  2. Cara Mengubah Tabel di Oracle

  3. Mekanisme yang Diikuti oleh Oracle saat kami mengambil cadangan panas

  4. pola nama tidak valid saat mencoba melewati pemetaan objek tipe Oracle khusus

  5. Bagaimana mengatasi ORA-29913 dengan tabel eksternal