Salman Arefin
Salman Arefin

Reputation: 373

Inconsistent datatypes: expected NUMBER got BINARY while updating blob in Oracle

I am trying to update a column named Body in my LetterTemplate table. But whenever I try to execute my query, the error shows : Inconsistent datatypes: expected NUMBER got BINARY

My code:

public static void UpdatData(OracleConnection connection, int mailId, byte[] sData)
{
    OracleCommand command = new OracleCommand("UPDATE LetterTemplate SET " + "BODY = :BODY WHERE ID = :ID ", connection);

    OracleParameter blobParameter = new OracleParameter();

    blobParameter.OracleDbType = OracleDbType.Blob;
    blobParameter.ParameterName = "BODY";
    blobParameter.Value = sData;

    OracleParameter mailIDParameter = new OracleParameter();

    mailIDParameter.OracleDbType = OracleDbType.Int32;
    mailIDParameter.ParameterName = "ID";
    mailIDParameter.Value = mailId;
    //command.Parameters.Add("ID", OracleDbType.Int32).Value = mailId;
    //command.Parameters.Add("BODY", OracleDbType.Blob, sData.Length).Value = sData;

    command.Parameters.Add(mailIDParameter);
    command.Parameters.Add(blobParameter);

    //connection.Open();

    command.ExecuteNonQuery();


}

Upvotes: 1

Views: 260

Answers (1)

Syed Mohammad Hassan
Syed Mohammad Hassan

Reputation: 36

By carefully observing your code, I found that the sequence of adding the parameters is different from the variable declared. As a result, it was trying to set mailIDParameter to the Body, resulting in that error.

Try to swap the lines like this:

your code:

command.Parameters.Add(mailIDParameter);
command.Parameters.Add(blobParameter);

changed code:

command.Parameters.Add(blobParameter);
command.Parameters.Add(mailIDParameter);

Hope you problem is solved

Upvotes: 2

Related Questions