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

ORA-01036:tên / số biến không hợp lệ khi chạy truy vấn thông qua C #

Nguyên nhân gốc rễ

Trong Oracle, bạn có ba loại câu lệnh SQL (và ngoài ra còn có các khối PL / SQL):

  • Các câu lệnh bằng Ngôn ngữ Definiton Dữ liệu (DDL). Các câu lệnh này sửa đổi cấu trúc của cơ sở dữ liệu. Chúng thường bắt đầu bằng động từ "ALTER" hoặc "CREATE"
  • Các tuyên bố trong Langugage Sửa đổi Dữ liệu (DML). Có các câu lệnh sửa đổi nội dung bên trong bảng, để lại cấu trúc của mỗi bảng không bị thay đổi. Những câu lệnh này thường bắt đầu bằng "INSERT", "MERGE" hoặc "DELETE".
  • Các câu lệnh mà tôi gọi là "ngôn ngữ truy vấn" (dường như không có tên chính tắc nào cho những câu này). Câu lệnh này bắt đầu bằng động từ "CHỌN".

Biến ràng buộc trong Oracle chỉ được phép ở một số vị trí đặc biệt trong DML và câu lệnh truy vấn. Bạn đang cố gắng sử dụng các biến ràng buộc ở những nơi mà chúng không được phép. Do đó, lỗi.

Giải pháp

Xây dựng câu lệnh của bạn mà không có biến ràng buộc. Tạo chuỗi truy vấn hoàn chỉnh thay vì sử dụng nối chuỗi.

Nếu bạn muốn khử trùng đầu vào trước khi nối chuỗi, hãy sử dụng gói DBMS_ASSERT.

Bối cảnh

Biến ràng buộc chỉ có thể được sử dụng khi Oracle có thể xây dựng một kế hoạch truy vấn mà không cần biết giá trị của biến. Đối với các câu lệnh DDL, không có kế hoạch truy vấn. Do đó, các biến liên kết không được phép.

Trong DML và câu lệnh truy vấn, chỉ cho phép các biến ràng buộc khi chúng được sử dụng bên trong một bộ (liên quan đến lý thuyết tập hợp cơ bản), tức là khi giá trị sẽ được so sánh với giá trị trong bảng hoặc khi giá trị sẽ được chèn vào bảng . Họ không được phép thay đổi cấu trúc của kế hoạch thực thi (ví dụ:thay đổi bảng mục tiêu hoặc thay đổi số lượng so sánh).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. làm thế nào để cấp đặc quyền người dùng trên lược đồ cụ thể?

  2. Oracle:Chọn từ kiểu dữ liệu bản ghi

  3. CX_Oracle - nhập dữ liệu từ Oracle sang khung dữ liệu Pandas

  4. Điền mục cây với nhóm bản ghi trong các biểu mẫu Oracle

  5. Oracle PLS-00363:không thể sử dụng biểu thức '' làm mục tiêu gán