SQL सर्वर में, आप WAITFOR
. का उपयोग कर सकते हैं एक बैच, संग्रहीत कार्यविधि, या लेन-देन के निष्पादन में देरी करने के लिए बयान।
यह MySQL के sleep()
. की तरह काम करता है समारोह।
वास्तव में, यह शायद पोस्टग्रेज़ के तीन "स्लीप" फ़ंक्शंस के संयोजन की तरह है:pg_sleep()
, pg_sleep_for()
, और pg_sleep_until()
।
मैं ऐसा इसलिए कह रहा हूं, क्योंकि SQL सर्वर का WAITFOR
कथन आपको निष्पादन जारी रखने से पहले या तो एक समय विलंब, या एक वास्तविक निश्चित समय निर्दिष्ट करने का विकल्प देता है।
उदाहरण - विलंब निर्दिष्ट करें
समय विलंब निर्दिष्ट करने के लिए, DELAY
. का उपयोग करें तर्क, उसके बाद प्रतीक्षा करने/सोने का वास्तविक समय।
विलंब अधिकतम 24 घंटे हो सकता है।
प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।
SELECT CURRENT_TIMESTAMP AS [First Timestamp];
WAITFOR DELAY '00:00:10';
SELECT CURRENT_TIMESTAMP AS [Second Timestamp];
परिणाम:
Time: 11.137s (11 seconds) +-------------------------+ | First Timestamp | |-------------------------| | 2020-06-29 00:02:30.963 | +-------------------------+ (1 row affected) Commands completed successfully. +-------------------------+ | Second Timestamp | |-------------------------| | 2020-06-29 00:02:41.610 | +-------------------------+ (1 row affected)
DELAY
. का उपयोग करते समय विकल्प, मान को hh:mm[[:ss].mss] के रूप में स्वरूपित किया जाता है।
मान या तो डेटाटाइम . में निर्दिष्ट किया जा सकता है डेटा प्रारूप, या स्थानीय चर के रूप में। हालांकि, तिथियां निर्दिष्ट नहीं की जा सकतीं, इसलिए दिनांक डेटाटाइम . का भाग है मान की अनुमति नहीं है.
उदाहरण - एक समय निर्दिष्ट करें
वैकल्पिक रूप से, आप TIME
. का उपयोग कर सकते हैं एक समय निर्दिष्ट करने के लिए तर्क जब बैच, संग्रहीत कार्यविधि, या लेन-देन चलता है।
इस मामले में, प्रदान किया गया मान वह समय होता है जब WAITFOR
कथन समाप्त।
प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।
SELECT CURRENT_TIMESTAMP AS [First Timestamp];
WAITFOR TIME '04:33:30';
SELECT CURRENT_TIMESTAMP AS [Second Timestamp];
परिणाम:
Time: 39.487s (39 seconds) +-------------------------+ | First Timestamp | |-------------------------| | 2020-06-29 04:32:51.183 | +-------------------------+ (1 row affected) Commands completed successfully. +-------------------------+ | Second Timestamp | |-------------------------| | 2020-06-29 04:33:30.160 | +-------------------------+ (1 row affected)
आपके द्वारा प्रदान किए जाने वाले समय मूल्य के संबंध में ध्यान रखने योग्य कुछ बातें यहां दी गई हैं:
- समय को डेटाटाइम . में निर्दिष्ट किया जा सकता है डेटा प्रारूप, या इसे स्थानीय चर के रूप में निर्दिष्ट किया जा सकता है।
- तिथियां निर्दिष्ट नहीं की जा सकतीं, इसलिए दिनांक डेटाटाइम का भाग है मूल्य की अनुमति नहीं है।
- समय को hh:mm[[:ss].mss] के रूप में स्वरूपित किया गया है और इसमें वैकल्पिक रूप से 1900-01-01 की तारीख शामिल हो सकती है।
वास्तविक विलंब भिन्न हो सकता है
वास्तविक समय विलंब आपके द्वारा निर्दिष्ट समय से भिन्न हो सकता है, क्योंकि यह सर्वर लोड जैसी चीजों पर निर्भर करेगा।
टाइम काउंटर तब शुरू होता है जब WAITFOR
स्टेटमेंट थ्रेड शेड्यूल किया गया है। यदि सर्वर व्यस्त है, तो थ्रेड को तुरंत शेड्यूल नहीं किया जा सकता है, इसलिए समय विलंब निर्दिष्ट समय से अधिक हो सकता है।
सर्वर ब्रोकर संदेश
WAITFOR
स्टेटमेंट कुछ तर्कों/मानों को स्वीकार करता है जो केवल सर्विस ब्रोकर संदेशों पर लागू होते हैं।
सर्विस ब्रोकर संदेशों का उपयोग करते समय आप एक RECEIVE
प्रदान कर सकते हैं कथन या GET CONVERSATION GROUP
स्टेटमेंट, साथ ही एक TIMEOUT
तर्क जो कतार में संदेश के आने की प्रतीक्षा करने के लिए मिलीसेकंड में समय की अवधि निर्दिष्ट करता है।
इन विकल्पों के बारे में अधिक जानकारी के लिए Microsoft के आधिकारिक दस्तावेज़ देखें।