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