EmmaPp Ответов: 1

Как пройти мимо этого параметра к функции oracle?


У меня есть функция Oracle, которая получает статус и возвращает другой статус, эта функция не может быть изменена, и я хотел бы знать, есть ли у кого-то лучшее представление о том, как итерация одной и той же функции передает ей список состояний.

Спасибо.


public List<string> GetStatusNotDisplayTCByList(List<string> status)
       {
           try
           {
               List<string> result = new List<string>();

               using (OracleConnection conn = new OracleConnection(ConfigurationManager.ConnectionStrings["dbnet"].ConnectionString))
               {
                   using (OracleCommand comm = new OracleCommand("pkg_aut_module.fn_get_status", conn))
                   {
                       comm.CommandType = CommandType.StoredProcedure;
                       comm.BindByName = true;
                       comm.ArrayBindCount = status.Count;
                       comm.Parameters.Add("p_status", OracleDbType.Varchar2, status.ToArray(),ParameterDirection.Input);
                       comm.Parameters.Add("Vli", OracleDbType.RefCursor, null, ParameterDirection.ReturnValue);
                       DataTable dt = new DataTable();
                       conn.Open();

                       using (OracleDataReader reader = comm.ExecuteReader())
                       {
                           if (reader.HasRows)
                           {
                               dt.Load(reader);

                               List<DataRow> dr = dt.AsEnumerable().ToList();

                               while (reader.Read())
                               {
                                   foreach (var row in dr.AsEnumerable())
                                   {
                                       result.Add(Convert.ToString(row["status_display"]));
                                   }
                               }

                               reader.Close();
                               conn.Dispose();
                           }
                       }
                   }
               }

               return result;
           }
           catch (Exception e)
           {

               throw;
           }
       }


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

Я пытаюсь передать более одного параметра функции Oracle, и если это невозможно, я хотел бы знать, как я мог бы вызвать эту функцию несколько раз эффективным способом.

1 Ответов

Рейтинг:
12

Andy Lanng

Есть способы сделать это, если ваш proc имеет выходной параметр. Если нет, то вам просто придется сделать петлю


EmmaPp

Я решил ее, я создаю метод, который вызывает функцию в foreach, не хотел этого делать, но в конце концов это работает. спасибо вам за помощь.

Andy Lanng

Не меняя рутину, это был единственный выбор. Молодец что прошел через это и спасибо что принял мой неутешительный ответ 😊