2009-02-27 7 views
17

Qu'est-ce que SqlDbType mappe à varChar (max)? SqlDbType.VarChar dit qu'il est limité à 8K, bien que cela puisse être une erreur de documentation.Quel SqlDbType correspond à varChar (max)?

+0

Actuellement, je vois 3 réponses différentes, quelle solution avez-vous réellement utilisée? – edosoft

+0

En fin de compte, j'ai trouvé que ne pas définir explicitement le SqlDbType était la meilleure façon de procéder. Il est beaucoup moins sujet aux erreurs et ne doit pas être changé lorsque le proc stocké est modifié. –

+2

Mais maintenant, votre code construit un plan d'exécution chaque fois qu'une chaîne de longueur différente est transmise au SP. Ce n'est pas optimal. MSDN montre à utiliser -1, comme les états eglasius ci-dessous. – HardCode

Répondre

24

En fait, vous pouvez l'utiliser avec VarChar. S'il est un paramètre que vous pouvez construire avec: nouveau SqlParameter ("@ MyParam", SqlDbType.NVarChar, -1)

Voir: http://msdn.microsoft.com/en-us/library/bb399384.aspx

+1

Dois-je passer une taille de -1 ou puis-je la laisser vide? –

+1

question connexe http://stackoverflow.com/questions/973260/what-size-do-you-use-for-varcharmax-in-your-parameter-declaration – TheEmirOfGroofunkistan

-1

Utilisez VarChar et taille du jeu 2147483647 (2gb-1) OK ... Enfin compris ... si vous obtenez une erreur indiquant: " Chaîne [0]: la taille de la propriété Size a une taille invalide de 0."

-1

Vous devez simplement définir le paramètre de taille de la sortie SQL paramètre comme si:

Dim parameter As SqlParameter = New SqlParameter("@FinalImportCount", SqlDbType.NVarChar) 
parameter.Direction = ParameterDirection.Output 
parameter.Size = 4000 
cmd.Parameters.Add(parameter) 

Hope this helps quelqu'un - essaie de comprendre cela pendant 2 heures .... Grrrrr.

Questions connexes