J'ai une procédure stockée dans Sql Server 2005 avec un paramètre d'entrée varchar défini comme:Comment passer des chaînes vides ou NULL à un paramètre d'entrée de procédure stockée avec ADO et VB?
@Value varchar(24) = NULL
dans mon application VB6 je tente de régler le paramètre avec une fonction ADO:
Set prmParamVal = cmdChkParam.CreateParameter(, adVarChar, adParamInput, Len(paramValue), paramValue)
Si la valeur que je tente de passer est une chaîne vide (longueur zéro), je reçois l'erreur suivante:
ADODB.Connection error '800a0e7c' Parameter object is improperly defined. Inconsistent or incomplete information was provided.
J'ai essayé de passer une valeur NULL au lieu du vide st anneau, mais cela conduit à des erreurs différentes.
Comment puis-je transmettre des chaînes vides ou des valeurs NULL à la procédure stockée?
J'ai déjà lu beaucoup d'articles et de forums recherchés (j'ai même trouvé ma question plusieurs fois) mais sans la bonne réponse.
La solution de contournement utilisée pour les chaînes vides consiste à définir la longueur = 1 ou à définir la chaîne = "" (espace vide). Mais ce n'est pas vraiment sympa et je préférerais envoyer NULL. J'ai également expérimenté avec paramValue à vbNull, Null, vbNullString ou pour mettre prmParamVal.value = Empty sans n'importe quelle chance!
ah! ok, je pense que ta dernière phrase était importante! Mon problème avec null était toujours la longueur de zéro - ce qui conduit à une erreur.Donc comme dans ma base de données le paramètre est défini comme varchar (24), je peux définir la longueur à 24 - sans aucun inconvénient? –
Oui - puisque votre sproc est un VARCHAR (24), réglez la longueur sur 24. Il n'y aura aucun effet néfaste. –