Как создать NVarchar (max) Sqlparameter в C #? [Дубликат]
На этот вопрос уже есть ответ:
Какой размер вы используете для varchar (MAX) в объявлении параметров? 4 ответаУ меня есть следующий код для извлечения 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?) но никто не говорит конкретно, можете ли вы (или не можете) сделать это. Во-вторых, нужно ли это делать, даже если для параметра @JobNumber в хранимой процедуре я установил значение nvarchar (max) и, следовательно, предположительно, мне вообще не нужно было бы устанавливать длину в C #? Если я сделаю это, у него будут потенциальные проблемы с производительностью, как предлагается в этом вопрос Когда следует использовать SqlDbType и size при добавлении параметров SqlCommand??