2009-12-18 5 views

Répondre

2

Vous obtenez ceci si la valeur d'un paramètre est "null" (par opposition à DBNull.Value). Etes-vous sûr que la valeur du paramètre est DBNull.Value?

+0

haha ​​désolé mon erreur. Ça marche. – Riz

3

Si la chaîne est null, vous verrez cette erreur. Pour l'éviter, vous pouvez définir une valeur de paramètre par défaut dans votre proc stocké, ou vous pouvez passer DBNull.Value si votre chaîne est nulle.

0

Pouvez-vous donner plus de détails sur la façon dont vous appelez le sproc, le paramètre lui-même et la valeur. Vous savez dans votre sproc vous pouvez définir des valeurs par défaut pour les variables.

Quelque chose à l'effet de:

ALTER SprocMySproc 
@myvar varchar(50)=NULL 

SELECT blah FROM MyTable WHERE [email protected] OR @myvar IS NULL 

Votre réelle C# ou code vb.net peut alors ignorer l'envoi du paramètre s'il est nul ou vide

if(!(String.IsNullOrEmpty(myVar))) 
{ 
    //pass the parameter 
    mySQLCommandObject.Parameters.Add("@myvar", sqldbtype.varchar).Value = myVar; 
    //other code... 
} 
0

Avez-vous accès à la Procédure stockée? Si oui, (Et si la logique de procédure stockée permettre), modifier la déclaration du paramètre d'entrée pour ajouter « = null » à la fin, comme dans

Create procedure ProcName 
@MyParameterName Integer = Null, 
    -- con't 

As... 
Questions connexes