यहां डायनेमिक SQL का उपयोग करने का कोई कारण नहीं देखें। जब आप करते हैं गतिशील SQL का उपयोग करने की आवश्यकता है, आपको sp_executesql
पर विचार करना चाहिए EXEC()
. से वरीयता में उच्च . इसके कई कारण हैं, जिनमें शामिल हैं:
-
sp_executesql
क्वेरी योजनाओं का पुन:उपयोग करने की अधिक संभावना है (देखें Dynamic SQL - EXEC(@SQL) बनाम EXEC SP_EXECUTESQL(@SQL) ); -
दृढ़ता से टाइप किए गए पैरामीटर को
sp_executesql
. में पास करना बहुत आसान है (एक स्ट्रिंग को संयोजित करने से बेहतर SQL इंजेक्शन को विफल करना); और, -
आप डायनेमिक SQL स्कोप के भीतर से वेरिएबल को वापस कॉलिंग स्कोप में भी प्राप्त कर सकते हैं, उदाहरण के लिए:
यह एक बहुत उपयोगी उदाहरण नहीं है, लेकिन गतिशील तारों को निष्पादित करते समय यह एक आम समस्या है। लेकिन इस बिंदु पर अधिक, आपको केवल गतिशील एसक्यूएल पर विचार करना चाहिए, जब आपको पहले उपाय के रूप में नहीं करना चाहिए।