c# sql nvarchar sqlparameter

¿Cómo crear NVarchar(max) Sqlparameter en C#?



(1)

Así es como se establece explícitamente nvarchar (max):

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

Si está realmente preocupado por el rendimiento, puede considerar pasar una tabla de enteros: https://stackoverflow.com/a/10779593/465509

Esta pregunta ya tiene una respuesta aquí:

Tengo el siguiente código para extraer un DataTable utilizando un procedimiento almacenado e ingresando un parámetro de cadena @JobNumbers, que es una serie de números de trabajo creada dinámicamente (y, por lo tanto, se desconoce la longitud):

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); }

Como puede ver, actualmente he establecido el parámetro JobNumber en una longitud de 4000, que debería ser suficiente para tomar alrededor de 500 números de trabajo y debería ser suficiente. Sin embargo, existe la posibilidad de que pueda necesitar más en alguna ocasión. Entonces, me preguntaba, ¿hay alguna manera de establecer el parámetro en el tipo de parámetro sql equivalente de nvarchar (max)?

He echado un vistazo a varias preguntas similares ( ¿Cuál es el mejor método para pasar parámetros a SQLCommand? ) Pero ninguno dice específicamente si puedes (o no) hacer esto. En segundo lugar, ¿es incluso necesario hacer esto si configuro el parámetro @JobNumber en el procedimiento almacenado en nvarchar (max) y, por lo tanto, presumiblemente no necesitaría establecer la longitud en C #? Si hago esto, ¿tendré problemas potenciales de rendimiento como se sugiere en esta pregunta? ¿ Cuándo deben usarse "SqlDbType" y "tamaño" al agregar los parámetros de SqlCommand? ?