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

System.Data.OracleClient.OracleException:ORA-01036:tên / số biến bất hợp pháp

Tôi nghĩ rằng vấn đề của bạn được đặt ra do việc sử dụng một enum không hợp lệ trong các lệnh gọi Phương thức Thêm của bạn

Nếu bạn chạy mã này, bạn có thể nhận thấy rằng OracleType đối với Int32 không giống với SqlDbType

OracleType e = OracleType.Int32;
int i = (int)e;
Console.WriteLine(i.ToString());   // Output = 28
SqlDbType z = SqlDbType.Int;
i = (int)z;
Console.WriteLine(i.ToString());   // Output = 8

Vì vậy, tôi khuyên bạn nên sử dụng enum chính xác cho nhà cung cấp ADO.NET của bạn.

Điều thú vị cần lưu ý là gọi Add bằng SqlDbType thay vì OracleType được chấp nhận và không gây ra lỗi thời gian biên dịch. Điều này xảy ra vì phương thức Add có quá tải chấp nhận một đối tượng làm tham số thứ hai (Nó được sử dụng để truyền trực tiếp một giá trị khi xây dựng tham số).

Một giải pháp thay thế là sử dụng AddWithValue của OracleParameterCollection

   command.Parameters.AddWithValue("@course_Id", course_Id);
   command.Parameters.AddWithValue("@question", question);
   command.Parameters.AddWithValue("@posterName", posterName);
   command.Parameters.AddWithValue("@blogdate", blog_date);



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Liên kết tham số SQL OracleCommand

  2. Công cụ báo cáo từ điển dữ liệu

  3. Làm cách nào để bạn chỉ định mệnh đề IN trong một truy vấn động sử dụng một biến?

  4. SPOOL trả về các tệp trống khi cố gắng xuất từ ​​Nhà phát triển SQL

  5. Oracle SQL để chuyển đổi các hàng liên quan thành một hàng duy nhất