Как передать пользовательский тип таблицы в качестве параметра хранимой процедуры в C # - PullRequest
20 голосов
/ 23 июня 2009

В SQL Server 2008 мы можем определить тип таблицы и использовать его в качестве параметров хранимых процедур. Но как я могу использовать его в C # вызове этого SP? Другими словами, как создать таблицу или список и передать их в хранимую процедуру в коде C # с помощью этой новой функции SQL Server 2008?

Ответы [ 4 ]

20 голосов
/ 23 июня 2009

Вам нужно увидеть этот пример на CodeProject .

SqlParameter param = cmd.Parameters.AddWithValue("@FileDetails", dt); 

где dt - DataTable, а параметр @fileDetails является табличным типом в SQL:

create type FileDetailsType as table
(
    FileName        varchar(50),
    CreatedDate        varchar(50),
    Size       decimal(18,0)
)

Редактировать : Эта статья руководства разработчика MSDN также поможет.

2 голосов
/ 23 июня 2009

Самый простой способ - передать DataTable в качестве параметра. Посмотрите несколько примеров здесь .

0 голосов
/ 19 марта 2019

В моем случае мне нужно явно указать тип данных

SqlParameter param = sqlCommand.Parameters.AddWithValue("@something", dtSomething); // dtSomething is a DataTable
param.SqlDbType = SqlDbType.Structured;
param.TypeName = "dbo.type_something"; // The name of the User-Defined Table Type
0 голосов
/ 16 мая 2014

С Табличные параметры , связанные с Джефф Фрикадельки Ян ответ :

System.Data.SqlClient поддерживает заполнение табличных параметров из объектов DataTable, DbDataReader или System.Collections.Generic.IEnumerable ([T: System.Collections.Generic.IEnumerable`1)]. Вы должны указать имя типа для табличного параметра, используя свойство TypeName SqlParameter. TypeName должно совпадать с именем совместимого типа, ранее созданного на сервере. Следующий фрагмент кода демонстрирует, как настроить SqlParameter для вставки данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...