Поскольку я новичок в этом, я столкнулся с некоторой проблемой при выполнении хранимой процедуры в Oracle. Вот SP, который дает запись как выходной параметр, который имеет тип% rowtype и l_serno в качестве входного параметра, который имеет тип Number.Проблема с извлечением данных из SP (база данных Oracle)
Create OR Replace procedure get_product(l_serno in product.serno%type,record out product%rowtype)
is
begin
select * into record from product where serno=l_serno;
end get_product;
Использование C#, я пытаюсь извлечь данные из SP и показать его на экране сетки.
OracleCommand cmd = new OracleCommand("get_product", Conn);
cmd.CommandType = CommandType.StoredProcedure;
Conn.Open();
OracleParameter input = cmd.Parameters.Add("V_SERNO", OracleType.Number);
OracleParameter output = cmd.Parameters.Add("ITEMS_CURSOR", OracleType.Cursor);
input.Direction = ParameterDirection.Input;
output.Direction = ParameterDirection.ReturnValue;
input.Value = 2;
OracleDataReader rd = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(rd);
GridView1.DataSource = dt;
GridView1.DataBind();
Conn.Close();
Здесь я получаю сообщение об ошибке, как
ORA-06550: строка 1, столбец 24:
PLS-00306: неверное число или типы аргументов в вызове к 'GET_PRODUCT'
ORA-06550: строка 1, столбец 7:
Пожалуйста, дайте мне знать, что я здесь делаю. Спасибо заранее.
Вместо 'ParameterDirection.ReturnValue;', вы пробовали 'ParameterDirection.Output;'? ; – Hassan
Hi Hassan Nisar, Спасибо за ваш ответ. Я также попытался использовать параметр ParameterDirection.Output. По-прежнему получается такая же ошибка. – Pacchi
Перекрестите «OracleType», который вы упомянули в параметрах. Также проверьте этот [ответ] (http://stackoverflow.com/questions/14247921/how-to-return-oracle-output-parameters-from-a-stored-procedure-in-net). – Hassan