आपका कोड अपेक्षित व्यवहार कर रहा है। प्रक्रिया स्वयं को recursively कॉल कर रही है ।
यदि आप नहीं वह चाहते हैं, इसे आजमाएं:
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
अगर आप चाहते हैं रिकर्सन का उपयोग करने के लिए, आपको एक आधार मामला परिभाषित करना होगा (AKA "एक्जिट कंडीशन") जो संग्रहित प्रक्रिया को रिकर्सन स्टैक से बाहर कर देगा।