Váš kód se chová podle očekávání. Postup se nazývá rekurzivně .
Pokud neděláte chcete to, zkuste toto:
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
Pokud chcete Chcete-li použít rekurzi, musíte definovat základní případ (AKA "exit condition"), která způsobí, že uložená procedura opustí zásobník rekurze.