Как создать параметр табличного значения для текстовой команды - PullRequest
4 голосов
/ 19 мая 2011

У меня есть сгенерированный блок запроса SQL, который принимает параметр табличного значения в качестве ввода.

У меня есть DataTable data входной параметр, затем:

// add the table-value parameter
var tvp = com.Parameters.AddWithValue("data", data);
tvp.SqlDbType = SqlDbType.Structured;
tvp.TypeName = "???";

com.ExecuteNonQuery();

Проблема заключается в том, что если команда не является хранимой процедурой, то необходимо объявить TypeName.

Количество и тип столбцов в параметре data могут сильно различаться, поэтому у меня нет типа SQL, который я мог бы использовать.

Есть ли способ, которым я могу использовать TVP таким образом?

1 Ответ

3 голосов
/ 19 мая 2011

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

http://msdn.microsoft.com/en-us/library/bb675163.aspx

Я никогда не пробовал, но не должно быть никаких причин, по которым вы не могли сгенерировать оператор create TypeName доэтот блок кода основан на структуре ваших данных.Вы можете выбрать любое имя, которое захотите, а затем отбросить его, когда закончите.

Потребовалось бы немного кодирования, чтобы создать оператор create typename на основе структуры вашего объекта данных, но выполнимого.

...