SQL सर्वर में, आप SET ROWCOUNT
. का उपयोग कर सकते हैं किसी क्वेरी द्वारा लौटाई गई पंक्तियों को सीमित करने के लिए।
जिस तरह से यह काम करता है वह SQL सर्वर को निर्दिष्ट पंक्तियों की संख्या वापस आने के बाद क्वेरी को संसाधित करना बंद कर देता है।
यह TOP()
के समान है खंड, लेकिन इस अंतर के साथ कि SET ROWCOUNT
क्वेरी के बाहर सेट किया गया है, और बाद के सभी प्रश्नों को प्रभावित करेगा।
उदाहरण
प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।
सबसे पहले, एक प्रश्न करते हैं बिना सेटिंग ROWCOUNT
।
SELECT * FROM Dogs;
परिणाम:
+---------+-----------+ | DogId | DogName | |---------+-----------| | 1 | Fetch | | 2 | Fluffy | | 3 | Wag | | 1002 | Fetch | +---------+-----------+ (4 rows affected)
तो ROWCOUNT
setting को सेट किए बिना चार पंक्तियां वापस कर दी जाती हैं ।
आइए अब SET ROWCOUNT
. का उपयोग करें पंक्तियों की संख्या को सीमित करने के लिए, फिर क्वेरी को फिर से चलाएँ।
SET ROWCOUNT 2;
SELECT * FROM Dogs;
परिणाम:
+---------+-----------+ | DogId | DogName | |---------+-----------| | 1 | Fetch | | 2 | Fluffy | +---------+-----------+ (2 rows affected)
बाद की क्वेरी
जैसा कि बताया गया है, SET ROWCOUNT
बाद के सभी प्रश्नों को प्रभावित करता है।
अगर मैं पिछले एक के तुरंत बाद निम्नलिखित क्वेरी चलाता हूं, तो दो पंक्तियां भी वापस आती हैं।
SELECT * FROM Cats;
परिणाम:
+---------+-----------+ | CatId | CatName | |---------+-----------| | 1 | Meow | | 2 | Fluffy | +---------+-----------+ (2 rows affected)
यह इस तथ्य के बावजूद है कि अगर मैंने SET ROWCOUNT
. का उपयोग नहीं किया होता, तो तीन पंक्तियाँ वापस आ जातीं लौटाई जा रही पंक्तियों को सीमित करने के लिए।
मैं इसे COUNT()
. से सत्यापित कर सकता हूं खंड।
SELECT COUNT(*) FROM Cats;
परिणाम:
+--------------------+ | (No column name) | |--------------------| | 3 | +--------------------+
ROWCOUNT रीसेट करें
आप ROWCOUNT
को रीसेट कर सकते हैं इसे 0
. का मान देकर मान दें (शून्य)।
इसका मतलब है कि अब क्वेरीज़ के परिणाम सीमित नहीं होंगे। क्वेरी अंत तक संसाधित होती रहेगी।
SET ROWCOUNT 0;
SELECT * FROM Cats;
परिणाम:
+---------+-----------+ | CatId | CatName | |---------+-----------| | 1 | Meow | | 2 | Fluffy | | 3 | Scratch | +---------+-----------+ (3 rows affected)
ROWCOUNT बनाम TOP()
अगर आप TOP()
. का इस्तेमाल करते हैं जब आप पहले ही अपना ROWCOUNT
सेट कर चुके हों, तो किसी क्वेरी में क्लॉज़ करें , आपका ROWCOUNT
सेटिंग केवल TOP()
को ओवरराइड करेगी अगर ROWCOUNT
छोटा मान है।
यहां एक उदाहरण दिया गया है जहां ROWCOUNT
बड़ा मान है।
SET ROWCOUNT 3;
SELECT TOP(2) * FROM Dogs;
परिणाम:
+---------+-----------+ | DogId | DogName | |---------+-----------| | 1 | Fetch | | 2 | Fluffy | +---------+-----------+ (2 rows affected)
इस मामले में, TOP()
खंड जीत गया।
और यहां एक उदाहरण दिया गया है जहां ROWCOUNT
छोटा मान है।
SET ROWCOUNT 1;
SELECT TOP(2) * FROM Dogs;
परिणाम:
+---------+-----------+ | DogId | DogName | |---------+-----------| | 1 | Fetch | +---------+-----------+ (1 row affected)
संगतता
ध्यान दें कि Microsoft सलाह देता है कि SET ROWCOUNT
प्रभावित नहीं करेगा DELETE
, INSERT
, और UPDATE
SQL सर्वर के भावी रिलीज़ में कथन। Microsoft अनुशंसा करता है कि आप नए विकास कार्य में इस तरह के उपयोग से बचें, और वर्तमान में इसका उपयोग करने वाले अनुप्रयोगों को संशोधित करने की योजना बनाएं।
Microsoft TOP()
. का उपयोग करने की अनुशंसा करता है खंड यदि आपको DELETE
. में प्रभावित पंक्तियों को सीमित करने की आवश्यकता है , INSERT
, और UPDATE
बयान।
सावधानी
ROWCOUNT
विकल्प अधिकांश टी-एसक्यूएल स्टेटमेंट पर काम करता है, जिसमें ट्रिगर भी शामिल हैं। हालाँकि, यह डायनेमिक कर्सर को प्रभावित नहीं करता है, लेकिन यह कीसेट और असंवेदनशील कर्सर की पंक्तियों को सीमित करता है। इसलिए इस विकल्प का सावधानी से उपयोग किया जाना चाहिए।