निर्दिष्ट सेकंड के लिए निष्पादन में देरी का कारण कैसे बनता है?
यह ऐसा नहीं करता है:
WAITFOR DELAY '00:02';
सही प्रारूप क्या है?
निर्दिष्ट सेकंड के लिए निष्पादन में देरी का कारण कैसे बनता है?
यह ऐसा नहीं करता है:
WAITFOR DELAY '00:02';
सही प्रारूप क्या है?
जवाबों:
दस्तावेज़ के लिएWAITFOR()
आवश्यक स्ट्रिंग प्रारूप स्पष्ट रूप से नहीं है।
यह 2 सेकंड के लिए इंतजार करेगा:
WAITFOR DELAY '00:00:02';
प्रारूप है hh:mi:ss.mmm
।
जैसा कि अन्य उत्तरों में बताया गया है, निम्नलिखित सभी मानक स्ट्रिंग-आधारित सिंटैक्स के लिए काम करेंगे।
WAITFOR DELAY '02:00' --Two hours
WAITFOR DELAY '00:02' --Two minutes
WAITFOR DELAY '00:00:02' --Two seconds
WAITFOR DELAY '00:00:00.200' --Two tenths of a seconds
इसे पारित करने का एक वैकल्पिक तरीका एक DATETIME
मूल्य भी है। आप सोच सकते हैं कि मैं इसके साथ भ्रमित हो रहा हूं WAITFOR TIME
, लेकिन यह भी काम करता है WAITFOR DELAY
।
पारित करने के लिए विचार DATETIME
:
'1900-01-01'
)।DATETIME
ठीक से प्रारूपित करने की तुलना में यह हेरफेर करना बहुत आसान है VARCHAR
।2 सेकंड के लिए प्रतीक्षा करने के लिए कैसे:
--Example 1
DECLARE @Delay1 DATETIME
SELECT @Delay1 = '1900-01-01 00:00:02.000'
WAITFOR DELAY @Delay1
--Example 2
DECLARE @Delay2 DATETIME
SELECT @Delay2 = dateadd(SECOND, 2, convert(DATETIME, 0))
WAITFOR DELAY @Delay2
TIME
बनाम के लिए प्रतीक्षा पर एक नोट DELAY
:
क्या आपने कभी इस बात पर ध्यान दिया है कि अगर आप गलती से WAITFOR TIME
एक ऐसी तारीख गुजार देते हैं जो पहले से ही गुजर जाती है, यहां तक कि सिर्फ एक सेकंड के बाद भी वह कभी नहीं लौटेगी? इसकी जांच - पड़ताल करें:
--Example 3
DECLARE @Time1 DATETIME
SELECT @Time1 = getdate()
WAITFOR DELAY '00:00:01'
WAITFOR TIME @Time1 --WILL HANG FOREVER
दुर्भाग्य से, WAITFOR DELAY
एक ही काम करेंगे यदि आप इसे नकारात्मक DATETIME
मान देते हैं (हाँ, यह एक बात है)।
--Example 4
DECLARE @Delay3 DATETIME
SELECT @Delay3 = dateadd(SECOND, -1, convert(DATETIME, 0))
WAITFOR DELAY @Delay3 --WILL HANG FOREVER
हालाँकि, मैं अभी भी WAITFOR DELAY
एक स्थिर समय का उपयोग करने की सलाह दूंगा क्योंकि आप हमेशा पुष्टि कर सकते हैं कि आपका विलंब सकारात्मक है और यह इस तरह रहेगा कि लंबे समय तक आपके कोड को WAITFOR
कथन तक पहुंचने में समय लगेगा ।