Я использую .net 4.5.1, приложение командной строки Windows с использованием Oracle.DataAccess (ODP.NET) x86 2.122.1.0.C# Oracle 9i - Обновление двойного значения с использованием параметра не работает
где tran
- транзакция базы данных Oracle.
OracleCommand updCmd =
new OracleCommand("update mytable set price =0.5 where anseq = :p_id", tran.Connection);
updCmd.Transaction = tran;
updCmd.Parameters.Add("p_id", itemId);
var count= updCmd.ExecuteNonQuery();
count
== 1
тогда:
OracleCommand updCmd =
new OracleCommand("update mytable set price =:p_price where anseq = :p_id", tran.Connection);
updCmd.Transaction = tran;
updCmd.Parameters.Add("p_id", itemId);
updCmd.Parameters.Add("p_price", 0.5);
var count= updCmd.ExecuteNonQuery();
count
== 0
Даже явно устанавливая тип параметра:
updCmd.Parameters.Add(
new OracleParameter("p_price",
OracleDbType.Double,
22, System.Data.ParameterDirection.Input,
false, 16, 2, "myprice",
System.Data.DataRowVersion.Default, 0.5));
Результаты не обновляются.
Кто-нибудь испытал эту проблему раньше или имеет представление о том, что может вызвать ее?
ТИА
Вы пытались изменить порядок параметров.Add? для добавления первой цены, затем itemId? –
нет, зачем мне это делать !!!! но, конечно, это работает. если вы знаете, почему, пожалуйста, напишите как ответ – sambomartin
рад, что это вам помогло. AFAIK, в pl/sql порядок или привязки очень важен. Другими словами, если вы не привязываетесь по имени, вы связываете его по заказу. –