Здравствуйте, Аноним, Вы писали:
А>У меня возник вопрос, а ответа поиском не нашел, может, кто-нибудь сталкивался уже...
А>Итак, есть процедура в ORACLE, есть код на C#, который ее вызывает.
А>У процедуры несколько параметров разных типов, типы параметров в C# соответствуют оракловым. Порядок добавления параметров в объект OleDbCommand не соответствует порядку параметров процедуры в ORACLE.
А>Но передаются значения параметров почему-то в порядке их добавления к OleDbCommand, а не выбираются по именам.
А почему они должны выбираться "по именам"?
Читайте
документацию:
The OLE DB .NET Provider does not support named parameters for passing parameters to an SQL statement or a stored procedure called by an OleDbCommand when CommandType is set to Text. In this case, the question mark (?) placeholder must be used. For example:
SELECT * FROM Customers WHERE CustomerID = ?
Therefore, the order in which OleDbParameter objects are added to the OleDbParameterCollection must directly correspond to the position of the question mark placeholder for the parameter in the command text.
То, что у вас CommandType.StoredProcedure, а не "Text", как сказано, дела не меняет — System.Data.OleDb
не поддерживает именованные параметры: