Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak zaktualizować kolumnę BLOB, błąd ORA-00932, podczas gdy wstawka działa?

Naprawdę myślałem, że wyobrażałeś sobie różne rzeczy, kiedy czytałem twój post. Z ciekawości spróbowałem i byłem zdumiony, że ten błąd naprawdę występuje.

Jest dobra wiadomość. Poszperałem i znalazłem to:

Jak mogę zaktualizować dane w polach CLOB za pomocą>> przygotowanego zapytania <

Okazuje się, że podczas korzystania z instrukcji aktualizacji z LOB, LOB musi być zadeklarowany jako pierwszy w parametrach. Mając to na uwadze, pojawił się ten sam błąd, co w kodzie, ale zadziałało to idealnie:

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

Wystarczy przełączyć parametry.

Mam uznanie dla pytania i odpowiedzi na to pierwotne pytanie (w tym przypadku ten sam facet).

Masz rację, niewiele jest w sieci pomocy w zakresie aktualizacji bloków BLOB w Oracle.

Świetne pytanie. Czuję, że czegoś się dzisiaj nauczyłem.

-- EDYTUJ --

Zgodnie z sugestią OP istnieje inna poprawka dla tego samego wątku, o którym mowa powyżej, która może zapobiec konieczności zmiany ustawień parametrów. Domyślam się, że może się to również przydać, jeśli aktualizujesz wiele obiektów LOB.

Przełączanie BindByName Wygląda na to, że właściwość również rozwiązuje problem:

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 Database Security — szyfrowanie i deszyfrowanie

  2. Jak Oracle XMLTYPE w Hibernate

  3. C#:Przekaż typ zdefiniowany przez użytkownika do procedury składowanej Oracle

  4. praca domowa - próbujesz obliczyć wiele przystanków lotu między dwoma miastami?

  5. Oracle LITAGG() dla wielu atrybutów?