2010-11-30 6 views
1

Si, en utilisant le code suivant dans un MS SQL Server 2008 procédure stockée:SQL Server Stored Proc - Qu'est-ce qui est renvoyé à une variable si aucune donnée?

DECLARE @PROD_ID VARCHAR(20) 

    SELECT @PROD_ID = MYTABLE.PROD 
    FROM MYTABLE 
    WHERE MYTABLE.DEVID = @DEVCODE 

DEVCODE n'existe pas, ce qui va contenir prod_id? J'ai essayé de l'imprimer, mais il imprime ce qui semble être un espace. Cependant, le tester pour l'espace échoue. En outre, le test de la valeur NULL échoue. OU, devrais-je tester pour vide d'une manière différente?

Merci pour la lecture BBz

Répondre

1

Si l'ID @DEVCODE n'existe pas, @PROD_ID restera null.

Vous ne pouvez pas utiliser COALESCE ou ISNULL dans l'instruction SELECT @PROD_ID = ... car il ne retournera aucun enregistrement.

Cependant, vous pouvez faire:

DECLARE @PROD_ID VARCHAR(20) 

SELECT @PROD_ID = MYTABLE.PROD 
FROM MYTABLE 
WHERE MYTABLE.DEVID = @DEVCODE 

IF (@PROD_ID is null) BEGIN 
    -- do something 
END 
+0

C'est parfait, merci. Quelque chose d'aussi simple à négliger aussi: s – Bob

1

@PROD_ID doivent rester NULL si @DEVCODE n'existe pas.

-vous tester en utilisant de manière appropriée

[email protected]_ID IS NULL... 

et ne pas essayer de tester

[email protected]_ID = NULL... 

qui serait incorrect?

+0

Non, je n'étais pas, je cherchais à utiliser '='. Merci beaucoup pour le pointeur! – Bob

Questions connexes