Din kod fungerar som förväntat. Proceduren kallar sig rekursivt .
Om du inte gör det vill du det, prova det här:
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
Om du vill för att använda rekursion måste du definiera ett basfall (AKA "exit condition") som gör att lagrad procedur lämnar rekursionsstacken.