Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

ORA-01008:không phải tất cả các biến bị ràng buộc. Họ bị ràng buộc

Tôi biết đây là một câu hỏi cũ, nhưng nó chưa được giải quyết chính xác, vì vậy tôi đang trả lời câu hỏi đó cho những người khác có thể gặp sự cố này.

Theo mặc định, ODP.net của Oracle liên kết các biến theo vị trí và coi mỗi vị trí là một biến mới.

Việc coi mỗi bản sao là một biến khác nhau và đặt giá trị của nó nhiều lần là một cách giải quyết và là một vấn đề khó khăn, như furman87 đã đề cập và có thể dẫn đến lỗi, nếu bạn đang cố gắng viết lại truy vấn và di chuyển mọi thứ.

Cách đúng là đặt thuộc tính BindByName của OracleCommand thành true như sau:

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

Bạn cũng có thể tạo một lớp mới để đóng gói OracleCommand, thiết lập BindByName thành true khi khởi tạo, vì vậy bạn không phải đặt giá trị mỗi lần. Điều này được thảo luận trong bài đăng này



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tại sao tôi không thể thực hiện với x as (...) với ADODB và Oracle?

  2. Chức năng ngủ trong ORACLE

  3. SQL mã định danh không hợp lệ

  4. Cách tính hệ số phân cụm chỉ số Oracle

  5. Làm cách nào để thoát khỏi một từ dành riêng trong Oracle?