Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Qu'est-ce qui conduit à cet étrange comportement SQL ?

Votre code se comporte comme prévu. La procédure s'appelle récursivement .

Si vous ne le faites pas veux ça, essaie ça :

ALTER PROCEDURE dbo.Test 
    @Value int = null

AS

BEGIN

    IF (IsNull(@Value, '') = '')
        SELECT 'I am NULL!'
    ELSE
        SELECT 'I am ' + CONVERT(varchar(20), @Value)

END

GO

EXEC dbo.Test

Si vous voulez pour utiliser la récursivité, vous devez définir un cas de base (AKA "condition de sortie") qui fera sortir la procédure stockée de la pile de récursivité.