2009-06-16 17 views
11

तो Scope_Identity() SQL सर्वर में एक -बेट संख्यात्मक प्रकार देता है।मैं Scope_Identity() को int में कैसे डालूं?

यह कमाल नहीं है।

क्या इसे एक चुनिंदा क्वेरी में int में डालने का कोई सुरक्षित तरीका है, इसलिए हमें हमारे ओडीबीसी रैपर में SQL सर्वर की हर चीज का प्रबंधन करने की आवश्यकता नहीं है?

उत्तर

14

स्रोत स्तंभ के लिए जो पहचान अंतर्गत आता है एक पूर्णांक है, तो यह कास्ट करने के लिए कोई आवश्यकता नहीं है। निम्नलिखित कार्य ठीक से मानते हैं कि पहचान कॉलम एक इंटीजर है जो शुरूआत में है या यह "इंट" के अंदर फिट बैठता है।

DECLARE @NewIdent Int 
SET @NewIdent = SCOPE_IDENTITY() 
+3

लौट रहा है तो कास्ट को न्यूइडेन्ट को आवंटित करने की प्रक्रिया में ख्याल रखा जाता है, लेकिन यह अभी भी कास्टिंग कर रहा है। – lowerkey

+0

यह मेरे लिए काम नहीं करता है, SQL2016, यह सिर्फ मेरे लिए दशमलव (18,0) लौटाता है, मुझे इसे int में परिवर्तित करना पड़ा –

12
SELECT CAST(bigintcolumn AS int) 

(बशर्ते आप जानते हैं कि यह एक 32 बिट पूर्णांक में फिट होगा)

+0

है यही कारण है कि मैं क्या सोचा था, मुझे यकीन है कि क्यों यह हालांकि काम नहीं करता है नहीं कर रहा हूँ। T'was 0 –

2

बस इस तरह डाली:

select CAST(SCOPE_IDENTITY() as int) 

और आपका डेटा स्तर:

reader.GetInt32(0); 
संबंधित मुद्दे