SqlDbType.VarChar Taille maximale atteinte

Dans Mon code, je transmets ssortingng result valeur du ssortingng result à ma procédure stockée

 try { using (SqlStoredProcedure sspObj = new SqlStoredProcedure("dbo.usp_CloseEvent", Connection, CommandType.StoredProcedure)) { sspObj.AddParameterWithValue("@Close", SqlDbType.VarChar, 0, ParameterDirection.Input, result); sspObj.ExecuteNonQuery(); sspObj.Dispose(); } } catch (Exception xObj) { Console.WriteLine("Error >> " + xObj.Message); } 

SqlDbType.VarChar taille par défaut de SqlDbType.VarChar est SqlDbType.VarChar entre 1 et 8 000 caractères. Ma question est que si mon result variable de ssortingng a la taille plus de 8000 caractères

Et quelle est la solution pour cela?

Ma procédure stockée Ressemble à ceci

 ALTER PROCEDURE [dbo].[usp_CloseEvent] @Close VarChar(Max) AS 

SqlStoredProcedure.cs

 virtual public SqlParameter AddParameterWithValue(ssortingng parameterName, SqlDbType dbType, int size, ParameterDirection direction, object value) { SqlParameter p = this.AddParameter(parameterName, dbType, size, direction); if (value == null) { value = DBNull.Value; } p.Value = value; return p; } 

La database est SQL SERVER 2008

Pour un VARCHAR(MAX) , vous devez passer -1 comme taille lors de l'ajout d'un paramètre.

Mes questions sont: Que faire si mon résultat de variable de string a une taille de plus de 8000 caractères?

Un message d'erreur s'affichera indiquant que datatables d'input seront tronquées à la fin de la string (tronquer signifie couper).

Et quelle est la solution pour cela?

Je pense d'abord que vous vérifiez combien de caractères peuvent être passés à la procédure stockée et modifiez la colonne de table manuellement.

Une alternative est de changer la définition de colonne avec la command SQL Alter Table . Mais je ne recommand pas de cette façon