Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

इस अजीब एसक्यूएल व्यवहार की ओर क्या जाता है?

आपका कोड अपेक्षित व्यवहार कर रहा है। प्रक्रिया स्वयं को 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 "एक्जिट कंडीशन") जो संग्रहित प्रक्रिया को रिकर्सन स्टैक से बाहर कर देगा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. T-SQL का उपयोग करके SQL सर्वर डेटाबेस में विदेशी कुंजी वापस करने के 11 तरीके

  2. एक फ़ील्ड में एकाधिक मान (विदेशी कुंजी?)

  3. स्थिति परिवर्तन पर समूहीकरण

  4. SQL सर्वर में IF स्टेटमेंट कैसे काम करता है

  5. SQL सर्वर (T-SQL) में दो विभाजनों को एक में मिलाएं