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

Cách cập nhật cột BLOB, lỗi ORA-00932, trong khi Chèn hoạt động

Tôi thực sự mặc dù bạn đang tưởng tượng những thứ khi tôi đọc bài đăng của bạn. Vì tò mò, tôi đã thử và ngạc nhiên rằng lỗi này thực sự xảy ra.

Có một tin tốt. Tôi đã tìm kiếm xung quanh và tìm thấy điều này:

Làm cách nào để cập nhật dữ liệu trong các trường CLOB bằng cách sử dụng>> truy vấn đã chuẩn bị <

Hóa ra khi sử dụng câu lệnh cập nhật với LOB, LOB phải được khai báo đầu tiên trong các tham số. Với ý nghĩ đó, tôi đã gặp lỗi tương tự như bạn đã làm với mã của mình, nhưng điều này hoạt động hoàn hảo:

public static bool StoreBlobImage(OracleConnection conn, string ArtNr, byte[] bImageJpg)
{
    bool Ok = false;
    string Sql = "update MyTable set Image = :Image where ArtNr = :ArtNr";

    using (OracleCommand cmd = new OracleCommand(Sql, conn))
    {
        cmd.Parameters.Add("Image", OracleDbType.Blob).Value = bImageJpg;
        cmd.Parameters.Add("ArtNr", OracleDbType.Varchar2, 8).Value = ArtNr;

        try
        {
            cmd.ExecuteNonQuery();
        }
        catch (Exception TheException)
        {
        }
    }
    return Ok;
}

Đơn giản bằng cách chuyển đổi các tham số.

Tôi đã khen ngợi câu hỏi và câu trả lời của câu hỏi ban đầu đó (trong trường hợp này cũng là một anh chàng).

Bạn nói đúng, có rất ít thông tin quý giá trên web có thể giúp cập nhật về BLOB trong Oracle.

Câu hỏi tuyệt vời. Tôi cảm thấy như tôi đã học được điều gì đó hôm nay.

- CHỈNH SỬA -

Theo gợi ý của OP, có một bản sửa lỗi khác, theo cùng một chủ đề được tham chiếu ở trên, có thể ngăn chặn sự cần thiết của việc sắp xếp lại các tham số. Tôi đoán là điều này cũng có thể hữu ích nếu bạn đang cập nhật nhiều LOB.

Chuyển BindByName Thuộc tính dường như cũng giải quyết được vấn đề:

cmd.BindByName = true;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nếu dữ liệu tồn tại, khác ... sử dụng Oracle SQL?

  2. truy vấn thành công ngoài mong đợi

  3. Truy vấn Oracle để lấy Ngày cụ thể

  4. Làm thế nào để hiểu số liệu thống kê của tệp theo dõi trong Oracle. Chẳng hạn như CPU, thời gian đã trôi qua, truy vấn ... vv

  5. Nguyên nhân gây ra sự khác biệt giữa thời gian CPU và thời gian đã trôi qua trong tệp tkprof của Oracle