У меня есть следующий код, чтобы отбросить DataTable с помощью хранимой процедуры и ввести строковый параметр @JobNumbers, который представляет собой динамически создаваемую строку номеров заданий (и, следовательно, длина неизвестна):
using (SqlConnection connection = new SqlConnection(con))
{
SqlCommand cmd = new SqlCommand("dbo.Mystoredprocedure", connection);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@JobNumbers", SqlDbType.VarChar, 4000);
cmd.Parameters["@JobNumbers"].Value = JobNumber;
SqlDataAdapter da = new SqlDataAdapter(cmd);
connection.Open();
da.Fill(JobDetails);
}
Как вы можете видеть, в настоящее время я устанавливаю параметр JobNumber на длину 4000, что должно быть достаточным, чтобы принять около 500 номеров заданий и должно быть достаточно. Тем не менее, есть вероятность, что в этом случае может потребоваться больше. Итак, мне было интересно, есть ли способ установить параметр в эквивалентный тип параметра sql nvarchar (max)?
Я рассмотрел различные подобные вопросы (Какой лучший способ передать параметры SQLCommand?), но никто не говорит, можете ли вы (или можете "t) сделайте это. Во-вторых, это даже необходимо сделать, если я установил параметр @JobNumber в хранимой процедуре на nvarchar (max), и поэтому, по-видимому, мне не нужно было бы устанавливать длину в С# вообще? Если я это сделаю, это будет иметь потенциальные проблемы с производительностью, как было предложено в этом вопросе Когда должен "SqlDbType" и "размер" использовать при добавлении параметров SqlCommand??