Мое приложение C # (.NET 4.0) вызывает хранимую процедуру в базе данных PL / SQL. Я добавил пространство имен System.Data.OracleClient и добавил параметры, однако всякий раз, когда я его запускаю, я получаю исключение, в котором говорится, что параметры не совпадают.

Я считаю, что проблема в том, что мои параметры относятся к типу DbType.String или OracleType.VarChar. Чтение в Интернете показало, что люди используют другое перечисление под названием OracleDbType (например, OracleDbType.VarChar2).

Итак, как мне получить доступ к этому перечислению?

 OracleParameter returnParam = new OracleParameter("result", DbType.Xml);
            returnParam.Direction = ParameterDirection.ReturnValue;
            objCmd.Parameters.Add(returnParam);

            OracleParameter param1 = new OracleParameter("pivequivalentinstrument", DbType.String);
            param1.Direction = ParameterDirection.Input;
            param1.Value = EquivalentInstrKey;
            objCmd.Parameters.Add(param1);
1
Ayush 11 Фев 2011 в 18:37

2 ответа

Лучший ответ

OracleDbType - это ODP: Oracle.DataAccess.Client, а не устаревший System.Data.OracleClient, попробуйте использовать ODP, и он должен будь там.

4
Harrison 11 Фев 2011 в 19:09
Ага. Это перечисление является частью Oracle® Data Provider for .NET. См. это.
 – 
Mayank
11 Фев 2011 в 19:07

Вам нужно будет преобразовать ваш параметр непосредственно в OracleParameter, чтобы получить доступ к свойству OracleDbType.

2
Adam Robinson 11 Фев 2011 в 18:39
Я считаю, что мои параметры относятся к типу OracleParamter. См. Исходный вопрос. Я добавил код.
 – 
Ayush
11 Фев 2011 в 18:47
@xbonez: Тогда ваш объект param1, например, должен иметь свойство OracleDbType. Не так ли?
 – 
Adam Robinson
11 Фев 2011 в 18:48
Неа. Единственные варианты, которые у меня есть, - это OracleType и DbType.
 – 
Ayush
11 Фев 2011 в 18:54