2010-01-21 7 views
4

Lorsque j'appelle une procédure stockée je concatène des valeurs ensemble, ma question est de savoir comment appeler une procédure stockée mais envoyer une valeur 'NULL' dans l'un des paramètres?Appeler des procédures stockées, passer des valeurs NULL, traiter des valeurs booléennes

Disons que AID = null, mais si je passe cela à ma requête, je reçois une erreur ?! Ok, alors ma question suivante est de savoir comment transmettre une variable booléenne.

Dans ma procédure stockée, var @SearchChildren est vrai ou faux, mais comment puis-je le définir ou dois-je aller avec un int et rendre les choses simples pour moi-même et juste utiliser 0 ou 1?

MS SQL Server 2005.

Répondre

1

Modifier le paramètre de la procédure stockée Search_Res être facultative. @parameter = NULL. Lorsque la valeur NULL est passée, le paramètre est ignoré.

CREATE PROCEDURE dbo.foo 
    @param INT = NULL 
AS 
BEGIN ... 
+1

En fait, c'était la base de la réponse que j'ai utilisée, donc je vous donne la «coche». Merci à tous ceux qui ont répondu. – flavour404

0

Dans ce cas, puisque vous passez l'appel de procédure et les arguments que vous voulez littéraux AID contenir la valeur de chaîne « null », pas une valeur nulle.

Vous pouvez également envisager d'utiliser des paramètres de liaison. Il semble que votre langue d'appel soit VB.NET, donc je ne sais pas exactement comment faire cela dans cette langue, mais il y a beaucoup de références.

Je n'ai pas utilisé SQL Server, mais je sais que dans Oracle, il est fondamentalement illégal de transmettre des variables booléennes à des procédures stockées. L'utilisation d'un INT avec une valeur 0 ou 1 est recommandée.

7

Il semble que vous essayez d'exécuter un SP à l'aide d'une requête ad-hoc plutôt que d'un objet ADO.Net DBCommand. Ne pouvez-vous pas simplement ajouter "@SearchChildren = null" à votre chaîne?

Vous pouvez également définir des valeurs de paramètre explicitement à l'aide de l'objet de commande, c'est relativement simple. Excusez le C# ... mon VB est rouillé.

+0

+1 Pour ajouter les paramètres à l'objet de commande –

+0

J'aime ça, c'est propre :) – flavour404

Questions connexes