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

SQL सर्वर में SET ROWCOUNT कैसे काम करता है

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 विकल्प अधिकांश टी-एसक्यूएल स्टेटमेंट पर काम करता है, जिसमें ट्रिगर भी शामिल हैं। हालाँकि, यह डायनेमिक कर्सर को प्रभावित नहीं करता है, लेकिन यह कीसेट और असंवेदनशील कर्सर की पंक्तियों को सीमित करता है। इसलिए इस विकल्प का सावधानी से उपयोग किया जाना चाहिए।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में @@ TEXTSIZE क्या है?

  2. SQL सर्वर तालिका में मौजूदा कॉलम में डिफ़ॉल्ट बाधा कैसे जोड़ें - SQL सर्वर / TSQL ट्यूटोरियल भाग 91

  3. पदानुक्रमित डेटा की प्रतिलिपि बनाते समय अभिभावक-बाल संबंधों को सुरक्षित रखें

  4. SQL सर्वर में डेटाटाइम फ़ील्ड का डिफ़ॉल्ट मान टाइमस्टैम्प में जोड़ें

  5. SQL सर्वर में समग्र प्राथमिक कुंजी बनाना