Добрый день, коллеги!
У меня возник вопрос, а ответа поиском не нашел, может, кто-нибудь сталкивался уже...
Итак, есть процедура в ORACLE, есть код на C#, который ее вызывает.
У процедуры несколько параметров разных типов, типы параметров в C# соответствуют оракловым. Порядок добавления параметров в объект OleDbCommand не соответствует порядку параметров процедуры в ORACLE.
Но передаются значения параметров почему-то в порядке их добавления к OleDbCommand, а не выбираются по именам. Вопрос — почему, если у меня в процедуре:
CREATE OR REPLACE PROCEDURE ПРОЦЕДУРА(
параметр1 IN INTEGER;
параметр2 IN VARCHAR2;
параметр3 IN INTEGER;
...
а в коде явно указаны имена:
OleDbCommand tmp = new OleDbCommand("ПРОЦЕДУРА", conn);
tmp.CommandType = CommandType.StoredProcedure;
OleDbParameter param = null;
param = tmp.Parameters.Add(new OleDbParameter("параметр3", OleDbType.Integer));
param.Value = 1;
OleDbParameter param = null;
param = tmp.Parameters.Add(new OleDbParameter("параметр2", OleDbType.VarChar));
param.Value = "тест";
OleDbParameter param = null;
param = tmp.Parameters.Add(new OleDbParameter("параметр1", OleDbType.Integer));
param.Value = 2;
в процедуру попадут параметры: параметр1 = 1, параметр2 = "тест", параметр3 = 2, хотя все должно быть немного иначе?