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

संग्रहीत कार्यविधियों में किसी स्तंभ के डिफ़ॉल्ट मान का उपयोग करें

आप डिफ़ॉल्ट का उपयोग उस तरीके से नहीं कर रहे हैं जिस तरह से इसका इरादा है। यह कुछ ऐसा है जो SQL सर्वर डालने के समय आंतरिक रूप से मूल्यांकन करता है (या संभावित रूप से अपडेट करें यदि default कीवर्ड का उपयोग किया जाता है)।

यह SELECT . में उपयोग के लिए अभिप्रेत नहीं है . विचार करें कि इसमें मनमाने भाव हो सकते हैं जैसे DEFAULT CAST(GETDATE() AS INT) % 2 या स्केलर यूडीएफ को कॉल करना। स्ट्रिंग से बिट में कास्ट करने से आपके लिए उन भावों का मूल्यांकन नहीं होगा।

ऐसा कुछ करने का एकमात्र तरीका यह होगा कि आप इसका अलग से मूल्यांकन करें

DECLARE @B            BIT
        , @Definition NVARCHAR(max)

SELECT @Definition = N'SELECT @B = '
                     + object_definition(default_object_id)
FROM   sys.columns
WHERE  NAME = 'value'
       AND object_id = OBJECT_ID('dbo.t2')

EXEC sys.sp_executesql
  @Definition,
  N'@B BIT OUTPUT',
  @B = @B OUTPUT

SELECT t1.*,
       ISNULL(t2.value, @B)
FROM   t1
       LEFT JOIN t2
              ON t1.id = t2.id 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. लिंक किए गए सर्वर के लिए OLE DB प्रदाता Microsoft.Jet.OLEDB.4.0 का एक उदाहरण नहीं बना सकता नल

  2. TSQL md5 हैश C# .NET md5 से अलग है

  3. SQL सर्वर डेटाबेस स्नैपशॉट -1

  4. SQL सर्वर में ORIGINAL_DB_NAME () कैसे काम करता है

  5. SQL सर्वर में किसी मौजूदा तालिका में डिफ़ॉल्ट मान वाला कॉलम जोड़ें