Nutan R Ответов: 1

Я пытаюсь вызвать процедуру хранилища с выходным параметром как sys_refcursor через мой код C#. Но он постоянно выдает мне ошибку, говоря: "ORA-01036: незаконное имя переменной/номер"


Я пытаюсь вызвать процедуру хранилища с выходным параметром как sys_refcursor через мой код C#. Но он постоянно выдает мне ошибку, говоря: "ORA-01036: незаконное имя переменной/номер"

Я использую.NET framework 2.0 и System.Data.OracleClient для подключения базы данных Oracle.

Есть ли что-то, что я упускаю?

Заранее спасибо

Что я уже пробовал:

I am writing here the C# and SP which I am using.

C# Code:


Public DataTable ExecuteReport(ReportFilters filterAttribute)
        {
            DataTable dtDetailedReport = new DataTable();
            using (OracleConnection conn = new OracleConnection())
            {
                conn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
                OracleCommand cmd = new OracleCommand();
                cmd.Connection =conn;
                cmd.CommandText = "count_emp_by_dept";
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add("pin_no", OracleType.VarChar, 200).Value = filterAttribute.PIN;
                cmd.Parameters.Add("pResult ", OracleType.Cursor).Direction = ParameterDirection.Output;
                OracleDataAdapter adap =new OracleDataAdapter(cmd);
                adap.Fill(dtDetailedReport);
                conn.Close();
            }
            return dtDetailedReport;
        }


SP, который я использую

Ceate or replace procedure count_emp_by_dept(pin_no Varchar2, pResult out sys_refcursor)
is
begin
  open pResult for 
 select pinname from TOC2_Test  where pin = pin_no;
end count_emp_by_dept;

1 Ответов

Рейтинг:
2

Maciej Los

Следуйте за этим: asp.net - получить выходной параметр oracle с помощью OracleCommand - переполнение стека[^]

Цитата:
Перед выполнением убедитесь, что вы установили свойство SIZE для параметра. При использовании выходных параметров в Oracle указанный размер действует как буфер. Если буфер не установлен, то он равен 0, поэтому вы не получаете значение из базы данных.
var param = Ocmd.Parameters.AddWithValue("OUTPUTParam","").Direction = ParameterDirection.Output;
param.Size = 255;


Nutan R

Это не работает и выдает ту же ошибку