यदि आप संग्रहीत कार्यविधि को निष्पादित करने का प्रयास करते समय त्रुटि संदेश 11535, स्तर 16 का सामना करते हैं, तो इसका कारण यह है कि आपने WITH RESULT SETS
में पर्याप्त परिणाम सेट परिभाषित नहीं किए हैं खंड।
कुछ संग्रहीत कार्यविधियाँ कई परिणाम सेट लौटाती हैं। WITH RESULT SETS
का उपयोग करते समय खंड, आपको प्रत्येक अपेक्षित परिणाम सेट को परिभाषित करने की आवश्यकता है। आपको ऐसा करने की आवश्यकता है, भले ही आप केवल एक या कुछ परिणाम सेट की परिभाषा बदलना चाहते हों।
इस त्रुटि को ठीक करने के लिए, बस अतिरिक्त परिणाम सेट को WITH RESULT SETS
. में जोड़ें खंड, प्रत्येक को अल्पविराम से अलग किया गया है।
आप WITH RESULT SETS
. को हटाकर भी इसे ठीक कर सकते हैं खंड, लेकिन मुझे लगता है कि आप इसका उपयोग किसी कारण से कर रहे हैं (यानी आपको प्रक्रिया द्वारा लौटाए गए परिणाम सेट को फिर से परिभाषित करने की आवश्यकता है)।
कोड का उदाहरण जो त्रुटि का कारण बनता है
मान लीजिए कि हमारे पास एक संग्रहीत कार्यविधि है जो तीन परिणाम सेट लौटाती है।
EXEC sp_getCityStateCountryByCityId @CityId = 1;
परिणाम:
+------------+----------------------------+-----------------------------+ | CityName | LatestRecordedPopulation | ValidFrom | |------------+----------------------------+-----------------------------| | Aaronsburg | 613 | 2013-01-01 00:00:00.0000000 | +------------+----------------------------+-----------------------------+ (1 row affected) +---------------------+---------------------+----------------------------+ | StateProvinceCode | StateProvinceName | LatestRecordedPopulation | |---------------------+---------------------+----------------------------| | PA | Pennsylvania | 13284753 | +---------------------+---------------------+----------------------------+ (1 row affected) +-----------------+---------------+----------------------------+ | IsoAlpha3Code | CountryName | LatestRecordedPopulation | |-----------------+---------------+----------------------------| | USA | United States | 313973000 | +-----------------+---------------+----------------------------+ (1 row affected)
और कहें कि हम WITH RESULT SETS
का उपयोग करना चाहते हैं क्लॉज केवल पहले परिणाम सेट के कॉलम को फिर से परिभाषित करने के लिए।
निम्नलिखित कोड के साथ ऐसा करने से त्रुटि उत्पन्न होगी।
EXEC sp_getCityStateCountryByCityId @CityId = 1
WITH RESULT SETS
(
(
[City] nvarchar(50),
[Population] int,
[Valid From] date
)
);
परिणाम:
Msg 11535, Level 16, State 1, Procedure sp_getCityStateCountryByCityId, Line 14 EXECUTE statement failed because its WITH RESULT SETS clause specified 1 result set(s), and the statement tried to send more result sets than this.
ऐसा इसलिए है क्योंकि हमने अन्य परिणाम सेटों को WITH RESULT SETS
. में शामिल नहीं किया है खंड।
समाधान
समाधान अन्य परिणाम सेटों को WITH RESULT SETS
. में शामिल करना है खंड।
EXEC sp_getCityStateCountryByCityId @CityId = 1
WITH RESULT SETS
(
(
[City] nvarchar(50),
[Population] int,
[Valid From] date
),
(
[State Code] nvarchar(5),
[State Name] nvarchar(50),
[Population] int
),
(
[Country Code] nvarchar(3),
[Country Name] nvarchar(60),
[Population] int
)
);
परिणाम:
+------------+--------------+--------------+ | City | Population | Valid From | |------------+--------------+--------------| | Aaronsburg | 613 | 2013-01-01 | +------------+--------------+--------------+ (1 row affected) +--------------+--------------+--------------+ | State Code | State Name | Population | |--------------+--------------+--------------| | PA | Pennsylvania | 13284753 | +--------------+--------------+--------------+ (1 row affected) +----------------+----------------+--------------+ | Country Code | Country Name | Population | |----------------+----------------+--------------| | USA | United States | 313973000 | +----------------+----------------+--------------+ (1 row affected)
समस्या अब ठीक कर दी गई है।