2015-07-13 3 views
1

У меня есть функция Oracle, которая принимает входной параметр и возвращает курсор. Я использую C# для вызова функции Oracle, однако я не могу получить курсор.Вызвать функцию oracle, которая возвращает курсор

Мой Oracle вызов функции выглядит следующим образом: -

select TBL_POWER_VIEW.GET_POWER_ID('V') FROM DUAL; 

Мой C# Кодекс:

conn = new OracleConnection(OracleServer); 
conn.Open(); 
OracleCommand cmd = new OracleCommand(); 
cmd.CommandText = "TBL_POWER_VIEW.GET_POWER_ID"; 
cmd.CommandType = CommandType.StoredProcedure; 
cmd.Connection = conn; 


OracleParameter powerId = new OracleParameter("i_power_flg", OracleDbType.Varchar2); 
powerId.Direction = ParameterDirection.Input; 
powerId.Value = 'L'; 
cmd.Parameters.Add(powerId); 

OracleParameter oraP = new OracleParameter(); 
oraP.ParameterName = "TEST_CURSOR"; 
oraP.OracleDbType = OracleDbType.RefCursor; 
oraP.Direction = System.Data.ParameterDirection.Output; 
cmd.Parameters.Add(oraP); 

OracleDataAdapter adapter = new OracleDataAdapter(); 
adapter.SelectCommand=cmd; 
DataSet ds = new DataSet(); 
adapter.Fill(ds); 

Ошибка стека выглядит следующим образом: -

Первый шанс исключение Тип «Oracle.DataAccess.Client.OracleException» произошел в Oracle.DataAccess.dll
Oracle.Dat aAccess.Client.OracleException ORA-06550: строка 1, столбец 7:
PLS-00306: неверное число или типы аргументов в вызове к 'TEST_CURSOR'
ORA-06550: строка 1, столбец 7:
PL/SQL : Заявление игнорировали

+0

https://www.google.com/search?client=safari&rls=en&q=googlr&ie=UTF-8&oe=UTF -8 # safe = off & q = ado.net + oracle + cursor –

ответ

0

Выполните следующие действия

// Use Return instead of Output in Function 
oraP.Direction = ParameterDirection.Return; 

!!! Возвращаемый параметр должен быть указан первым, если вы делаете

cmd.BindByName = true; 

Это должно заботиться о нем

+0

Спасибо, что сработал. :) – Abhishek

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