Подтвердить что ты не робот

Как создать NVARCHAR (max) Sqlparameter в С#?

У меня есть следующий код, чтобы отбросить 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??

4b9b3361

Ответ 1

Вот как вы явно устанавливаете nvarchar (max):

cmd.Parameters.Add("@JobNumbers", SqlDbType.NVarChar, -1);

Если вы действительно заинтересованы в производительности, вам может потребоваться передать таблицу целых чисел: fooobar.com/info/185739/...