0

I'm trying to update Oracle table but I'm getting an error "{"ORA-01745: invalid host/bind variable name"}", although I don't have an issue with adding new record... What am I missing here?

        public static bool UpdateRow(Byte[] rowId, string paramXml1, string paramXml2, string paramXml3, string paramXml4,
string tblName = "XML_DATA")
    {
        string updateUser = Environment.UserName;

        try
        {
            using (connection = new OracleConnection())
            {
                connection.ConnectionString = ConnectionString;
                connection.Open();
                var command = connection.CreateCommand();
                //TODO: how to prevent sql injection? 
                var query = $"UPDATE {tblName} SET XML_DATA1=:xml1, XML_DATA2=:xml2, XML_DATA3=:xml3, XML_DATA4=:xml4, XML_DATA5=:updateUser, UPDATE_DATE=sysdate WHERE UUID=:rowID)";
                command.CommandText = query;
                command.Parameters.Add(new OracleParameter("xml1", paramXml1.ToUpper()));
                command.Parameters.Add(new OracleParameter("xml2", paramXml2.ToUpper()));
                command.Parameters.Add(new OracleParameter("xml3", paramXml3.ToUpper()));
                command.Parameters.Add(new OracleParameter("xml4", paramXml4));
                command.Parameters.Add(new OracleParameter("updateUser", updateUser.ToUpper()));
                command.Parameters.Add(new OracleParameter("rowID", rowId));
                int rowUpdated = command.ExecuteNonQuery();
                if (rowUpdated > 0)
                {
                    return true;
                }
            }
        }
        catch (OracleException e)
        {
        }
        return false;
    }

The data types are:

XML_DATA1 = VARCHAR2(50 CHAR)

XML_DATA2 = VARCHAR2(50 CHAR)

XML_DATA3 = VARCHAR2(50 CHAR)

XML_DATA4 = CLOB

XML_DATA5 = VARCHAR2(50 CHAR)

UPDATE_DATE = TIMESTAMP(9)

UUID = RAW

0

1 Answer 1

1

You are using one of the oracle key word ROWID as a parameter in query

UUID=:rowID

Change it to :rowID1 or something else and try

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.