I’m using Oracle.DataAccess rather than the obsolete System.Data.OracleClient and I seem to be having trouble passing multiple parameters to my update query
This works
OracleCommand.CommandText = "UPDATE db SET column1 = :param1 WHERE column2 = 'Y'"
OracleCommand.Parameters.Add(New OracleParameter("param1", "1234"))
But I want to be able to pass multiple parameters
Here’s my full code
OracleConn.Open()
OracleCommand = OracleConn.CreateCommand()
OracleCommand.CommandText = "UPDATE db SET column1 = :param1 WHERE column2 = :param2"
OracleCommand.CommandType = CommandType.Text
OracleCommand.Parameters.Add(New OracleParameter("param1", "1234"))
OracleCommand.Parameters.Add(New OracleParameter("param2", "Y"))
OracleCommand.ExecuteNonQuery()
My SELECT query seems to work when passing multiple parameters but not the update one
Although I can’t see anything wrong with your example, I wonder if you’re being hit by the old
BindByNameproblem. By default, ODP.NET binds parameters to the query in the order in which they are added to the collection, rather than based on their name as you’d like. Try settingBindByNametotrueon yourOracleCommandobject and see if that fixes the problem.I’ve had this problem so many times that I use my own factory method to create commands which automatically sets this property to
truefor me.Classic useless Oracle documentation here