2014-12-12 4 views
0

У меня есть такая процедура# вызов процедуры Oracle C

PROCEDURE FILL_NDRMCA (res OUT number) AS 
begin 
    .......... 
    res:=1; 
end FILL_NDRMCA; 

, когда я называю процедуры из C# я получаю это исключение

ORA-06550: line 1, column 7: 
PLS-00306: wrong number or types of arguments in call to 'FILL_NDRMCA' 
ORA-06550: line 1, column 7: 
PL/SQL: Statement ignored . 

мой C# код

SWProcedureExecuter pe = new SWProcedureExecuter("OC_YKB.NDRM.FILL_NDRMCA"); 
pe.AddParameter("res",String.Empty, SWParameterDirection.Output); 
pe.Execute(); 
Int32 resultResultCode = (Int32)pe.GetValue("res");   
Result =resultResultCode; 

Можете ли вы мне помочь? Благодаря

+0

'SWProcedureExecuter'is пользовательский класс, как бы мы знаем, что происходит? Вопросы, требующие помощи по отладке («почему этот код не работает?») Должны включать в себя желаемое поведение, конкретную проблему или ошибку и кратчайший код, необходимый для воспроизведения в самом вопросе. Вопросы без четкого описания проблемы не полезны другим читателям. См. [Как создать минимальный, завершенный и проверяемый пример] (http://stackoverflow.com/help/mcve). – nvoigt

ответ

0

в СП параметр может является "НОМЕР"

Но при вызове SP you'r используя значение "String.Empty" поэтому SP recives в VARCHAR Param.

Попробуйте изменить:

pe.AddParameter("res", String.Empty, SWParameterDirection.Output); 

в

pe.AddParameter("res", 0, SWParameterDirection.Output); 
+0

lem2802, я изменил его, но он оставил те же возможности :( – Hasanova

+0

ok, затем попробуйте pe.Parameters.Add («res», OracleDbType.Int32) .Direction = ParameterDirection.Output; – lem2802

+0

теперь исключение: «Значение не входит в ожидаемый диапазон. » – Hasanova

Смежные вопросы