Как передать в хранимую процедуру передать несколько строк данных?

Всем привет.

Есть 2 ХП. Одна возвращает данные, во вторую эти данные надо передавать.
Обе работают с коллекциями данных.

С ХП которая возвращает данные разобрался. Т.к. работаю с .NET Core, а в нем нет DataTable, пришлось создавать свой класс-обертку для возвращаемых данных. По сути у меня есть многомерный массив данных. С этим все понятно.

Вопрос по хранимке, которая должна эти данные принять.

SqlParameter позволяет создать параметр и передать в него данные. Это не проблема. Не знаю как передать массив данных.

Подскажите пожалуйста.
  • Вопрос задан
  • 428 просмотров
Решения вопроса 1
petermzg
@petermzg
Самый лучший программист
В .NET Core DataTable заменяется на List<SqlDataRecord>
Пример:
private SqlParameter CreateTableGuidParameter(string name, Guid[] ids)
{
      var tableParam = new SqlParameter(name, SqlDbType.Structured);
      tableParam.TypeName = "[dbo].[TableUniqueIdentifierType]";
      tableParam.Direction = ParameterDirection.Input;

      var rows = new List<SqlDataRecord>();
      var sqlMetaData = new SqlMetaData("Id", SqlDbType.UniqueIdentifier);
      foreach (var id in ids)
      {
           var row = new SqlDataRecord(sqlMetaData);
           row.SetValues(id);
           rows.Add(row);
     }
     tableParam.Value = rows;
     return tableParam;
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@d-stream
Готовые решения - не подаю, но...
По-моему "штатно" это в виде xml или json (первый вроде с 2008, второй - позже)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы