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

ORA-01008:tidak semua variabel terikat. Mereka terikat

Saya tahu ini adalah pertanyaan lama, tetapi belum dijawab dengan benar, jadi saya menjawabnya untuk orang lain yang mungkin mengalami masalah ini.

Secara default, ODP.net Oracle mengikat variabel berdasarkan posisi, dan memperlakukan setiap posisi sebagai variabel baru.

Memperlakukan setiap salinan sebagai variabel yang berbeda dan menyetel nilainya beberapa kali adalah solusi dan menyusahkan, seperti yang disebutkan furman87, dan dapat menyebabkan bug, jika Anda mencoba menulis ulang kueri dan memindahkan berbagai hal.

Cara yang benar adalah dengan menyetel properti BindByName dari OracleCommand menjadi true seperti di bawah ini:

var cmd = new OracleCommand(cmdtxt, conn);
cmd.BindByName = true;

Anda juga bisa membuat kelas baru untuk mengenkapsulasi OracleCommand yang mengatur BindByName menjadi true saat instantiasi, jadi Anda tidak perlu menyetel nilainya setiap kali. Ini dibahas dalam posting 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. Bagaimana cara mengubah format tanggal dari MM/DD/YYYY ke YYYY-MM-DD di PL/SQL?

  2. Fungsi COMPOSE() di Oracle

  3. Adakah dampak kinerja di Oracle untuk menggunakan LIKE 'string' vs ='string'?

  4. ORA-01097

  5. ORA-30926:tidak bisa mendapatkan set baris yang stabil di tabel sumber saat Menggabungkan tabel