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é.