Как создать параметр табличного значения для текстовой команды
У меня есть сгенерированный блок запроса 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 ответ
Необходимо иметь определенное имя типа на стороне сервера, чтобы передать табличный параметр. Так что если не существует, то нет... вы не можете использовать параметр табличного значения таким образом. Подробнее об ограничениях и требованиях читайте здесь:
http://msdn.microsoft.com/en-us/library/bb675163.aspx
Я никогда не пробовал, но не должно быть никаких причин, по которым вы не могли бы сгенерировать оператор create TypeName до этого блока кода, основанного на структуре вашей таблицы данных. Вы можете выбрать любое имя, которое захотите, а затем бросить его, когда закончите.
Потребовалось бы немного кода, чтобы создать оператор create typename, основанный на структуре ваших данных, но выполнимых.