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

Cara Memperbarui kolom BLOB, kesalahan ORA-00932, saat Sisipkan berfungsi

Saya benar-benar berpikir Anda sedang membayangkan hal-hal ketika saya membaca posting Anda. Karena penasaran, saya mencobanya dan kagum bahwa kesalahan ini benar-benar terjadi.

Ada kabar baik. Saya mencari-cari dan menemukan ini:

Bagaimana saya bisa memperbarui data di bidang CLOB menggunakan>> kueri yang disiapkan <

Ternyata saat menggunakan pernyataan update dengan LOB, LOB harus dideklarasikan terlebih dahulu di parameter. Dengan mengingat hal itu, saya mendapatkan kesalahan yang sama dengan yang Anda lakukan dengan kode Anda, tetapi ini bekerja dengan sempurna:

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;
}

Cukup dengan mengganti parameter.

Saya memberikan pujian untuk pertanyaan dan jawaban dari pertanyaan awal itu (orang yang sama, dalam hal ini).

Anda benar, hanya ada sedikit bantuan di web untuk pembaruan tentang BLOB di Oracle.

Pertanyaan bagus. Saya merasa seperti saya belajar sesuatu hari ini.

-- EDIT --

Sesuai saran OP, ada perbaikan lain, per utas yang sama yang dirujuk di atas, yang dapat mencegah perlunya mengatur ulang parameter. Dugaan saya, ini mungkin juga berguna jika Anda memperbarui beberapa LOB.

Mengganti BindByName Properti tampaknya juga menyelesaikan masalah:

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. Oracle To_Char berfungsi V dalam format string

  2. Mengapa rlwrap menggemakan apa yang saya ketik dari keyboard?

  3. Oracle:mendapatkan nilai maksimum grup?

  4. Oracle UTL_FILE membaca baris file CSV

  5. Oracle to_date() keluaran salah