Неверное количество или типы аргументов при вызове GET_MANUAL_LOS_REQ_STATUS в Oracle при привязке данных. ⇐ C#
-
Гость
Неверное количество или типы аргументов при вызове GET_MANUAL_LOS_REQ_STATUS в Oracle при привязке данных.
Я связываю данные с помощью хранимой процедуры, но получаю сообщение об ошибке
неправильное количество или типы аргументов при вызове 'GET_MANUAL_LOS_REQ_STATUS'\nORA-06550:
Вот процедура
создать или заменить PROCEDURE GET_MANUAL_LOS_REQ_STATUS ( P_CURR OUT SYS_REFCURSOR, P_OUTSTATUS ВЫХОД VARCHAR2, P_MESSAGE ВЫХОД VARCHAR2 ) КАК НОМЕР T_CNT:=0; НАЧИНАТЬ ОТКРЫТЬ P_CURR ДЛЯ ВЫБЕРИТЕ LOS.A6_NEID, LOS.SOURCE, LOS.STATUS, LOS.REMARKS, LOS.MODIFIED_DATE, LOS.USERNAME, REQ.STATUS LOS_STATUS ИЗ LOS_REQUEST_MANUAL LOS, APP_3DPT.LOS_REQUEST_LOG REQ ГДЕ LOS.A6_NEID = REQ.LOS_REQUEST_ID ЗАКАЗАТЬ ПО MODIFIED_DATE DESC; P_OUTSTATUS :='УСПЕХ'; ИСКЛЮЧЕНИЕ, КОГДА ДРУГИЕ ТОГДА P_OUTSTATUS :='FAILED'; P_MESSAGE :=SQLERRM; END GET_MANUAL_LOS_REQ_STATUS;
Также ниже приведен код.
public DataTable Bind_Grid_Data() { OracleConnection conn = новый OracleConnection(ConfigurationManager.ConnectionStrings["ConnectionStringAirFiber"].ConnectionString); пытаться { OracleCommand cmd = новый OracleCommand(); cmd.ТипКоманды = ТипКоманды.СохраненнаяПроцедура; cmd.CommandText = ConfigurationManager.AppSettings["GET_MANUAL_LOS_REQ_STATUS"]; cmd.Соединение = подключение; cmd.Parameters.Add(новый OracleParameter { Имя параметра = "P_CURR", OracleDbType = OracleDbType.RefCursor, Размер = 500, Направление = ПараметрНаправление.Выход }); cmd.Parameters.Add(новый OracleParameter { Имя параметра = "P_OUTSTATUS", OracleDbType = OracleDbType.RefCursor, Размер = 500, Направление = ПараметрНаправление.Выход }); cmd.Parameters.Add(новый OracleParameter { Имя параметра = "P_MESSAGE", OracleDbType = OracleDbType.RefCursor, Размер = 500, Направление = ПараметрНаправление.Выход }); if (conn.State != ConnectionState.Open) conn.Open(); OracleDataAdapter daIPColo = новый OracleDataAdapter (cmd); DataTable dtIPColo = новый DataTable(); daIPColo.Fill(dtIPColo); вернуть dtIPColo; } поймать (Исключение ex) { бросать; } окончательно { if (conn.State == ConnectionState.Open) conn.Close(); }
Я связываю данные с помощью хранимой процедуры, но получаю сообщение об ошибке
неправильное количество или типы аргументов при вызове 'GET_MANUAL_LOS_REQ_STATUS'\nORA-06550:
Вот процедура
создать или заменить PROCEDURE GET_MANUAL_LOS_REQ_STATUS ( P_CURR OUT SYS_REFCURSOR, P_OUTSTATUS ВЫХОД VARCHAR2, P_MESSAGE ВЫХОД VARCHAR2 ) КАК НОМЕР T_CNT:=0; НАЧИНАТЬ ОТКРЫТЬ P_CURR ДЛЯ ВЫБЕРИТЕ LOS.A6_NEID, LOS.SOURCE, LOS.STATUS, LOS.REMARKS, LOS.MODIFIED_DATE, LOS.USERNAME, REQ.STATUS LOS_STATUS ИЗ LOS_REQUEST_MANUAL LOS, APP_3DPT.LOS_REQUEST_LOG REQ ГДЕ LOS.A6_NEID = REQ.LOS_REQUEST_ID ЗАКАЗАТЬ ПО MODIFIED_DATE DESC; P_OUTSTATUS :='УСПЕХ'; ИСКЛЮЧЕНИЕ, КОГДА ДРУГИЕ ТОГДА P_OUTSTATUS :='FAILED'; P_MESSAGE :=SQLERRM; END GET_MANUAL_LOS_REQ_STATUS;
Также ниже приведен код.
public DataTable Bind_Grid_Data() { OracleConnection conn = новый OracleConnection(ConfigurationManager.ConnectionStrings["ConnectionStringAirFiber"].ConnectionString); пытаться { OracleCommand cmd = новый OracleCommand(); cmd.ТипКоманды = ТипКоманды.СохраненнаяПроцедура; cmd.CommandText = ConfigurationManager.AppSettings["GET_MANUAL_LOS_REQ_STATUS"]; cmd.Соединение = подключение; cmd.Parameters.Add(новый OracleParameter { Имя параметра = "P_CURR", OracleDbType = OracleDbType.RefCursor, Размер = 500, Направление = ПараметрНаправление.Выход }); cmd.Parameters.Add(новый OracleParameter { Имя параметра = "P_OUTSTATUS", OracleDbType = OracleDbType.RefCursor, Размер = 500, Направление = ПараметрНаправление.Выход }); cmd.Parameters.Add(новый OracleParameter { Имя параметра = "P_MESSAGE", OracleDbType = OracleDbType.RefCursor, Размер = 500, Направление = ПараметрНаправление.Выход }); if (conn.State != ConnectionState.Open) conn.Open(); OracleDataAdapter daIPColo = новый OracleDataAdapter (cmd); DataTable dtIPColo = новый DataTable(); daIPColo.Fill(dtIPColo); вернуть dtIPColo; } поймать (Исключение ex) { бросать; } окончательно { if (conn.State == ConnectionState.Open) conn.Close(); }
Мобильная версия