Как создать nvarchar (max) Sqlparameter в C#? [дубликат]

этот вопрос уже есть ответ здесь:

У меня есть следующий код для возврата 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??

1 ответов


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

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

Если вы действительно заинтересованы в производительности, вы можете рассмотреть возможность передачи таблицы целых чисел: https://stackoverflow.com/a/10779593/465509