Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да актуализирате BLOB колона, грешка ORA-00932, докато Insert работи

Наистина си помислих, че си въобразяваш неща, когато прочетох поста ти. От любопитство го пробвах и бях изумен, че тази грешка наистина се появява.

Има добри новини. Разрових се и намерих това:

Как мога да актуализирам данни в CLOB полета с помощта на>> подготвена заявка <<с ODP (Oracle.DataAccess)?

Оказва се, че когато използвате израз за актуализиране с LOB, LOB трябва да бъде деклариран първо в параметрите. Имайки това предвид, получих същата грешка, която направихте с вашия код, но това работи перфектно:

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

Просто чрез превключване на параметрите.

Поздравих въпроса и отговора на този първоначален въпрос (в този случай същият човек).

Прав сте, в мрежата има много малко помощ за актуализации на BLOB в Oracle.

Страхотен въпрос. Имам чувството, че днес научих нещо.

-- РЕДАКТИРАНЕ --

По предложение на OP има друга корекция, за същата нишка, посочена по-горе, която може да предотврати необходимостта от пренареждане на параметрите. Предполагам, че това също може да е полезно, ако актуализирате множество LOB.

Превключване на BindByName Изглежда, че собствеността също решава проблема:

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. Изисква ли се COMMIT след всяко EXECUTE IMMEDIATE?

  2. pivot не работи при използване на вложен избор в SQL

  3. ORA-00933:SQL командата не е приключила правилно при използване на ос

  4. Oracle - Как да генерирам скрипт от sql разработчик

  5. Oracle 12c:Как мога да променя съществуваща колона с първичен ключ в колона за самоличност?