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

SQL सर्वर 2017 में एक संग्रहीत कार्यविधि बनाएँ

एक संग्रहीत कार्यविधि एक में संकलित SQL कथनों का एक समूह है। संग्रहीत कार्यविधियों में व्यावसायिक तर्क और अन्य प्रोग्रामिंग संरचनाएँ शामिल हो सकती हैं।

SQL सर्वर में, एक संग्रहीत कार्यविधि एक या अधिक Transact-SQL कथनों का समूह या Microsoft .NET Framework सामान्य रनटाइम भाषा (CLR) विधि का संदर्भ है।

प्रोग्रामेबिलिटी

एक संग्रहीत कार्यविधि केवल एक लंबी स्क्रिप्ट से कहीं अधिक है। यह एक स्क्रिप्ट है जिसे विशेष रूप से संग्रहीत कार्यविधियों के अंतर्गत SQL सर्वर में सहेजा गया है नोड, और यह कर सकता है:

  • इनपुट पैरामीटर स्वीकार करें (और कॉलिंग प्रोग्राम में आउटपुट पैरामीटर के रूप में कई मान लौटाएं)।
  • प्रोग्रामिंग स्टेटमेंट होते हैं।
  • सफलता या विफलता, और किसी भी विफलता के कारण को इंगित करने के लिए कॉलिंग प्रोग्राम को स्थिति मान लौटाएं।

संग्रहीत प्रक्रियाओं में अक्सर व्यावसायिक तर्क होते हैं। उदाहरण के लिए, एक संग्रहीत कार्यविधि उन पैरामीटरों को स्वीकार कर सकती है जो इसे पास किए गए हैं और IF . का उपयोग करके उन पैरामीटरों के विरुद्ध परीक्षण कर सकते हैं बयान। उदाहरण के लिए, यदि पैरामीटर एक मान है, तो ऐसा करें, यदि यह दूसरा मान है, तो ऐसा करें।

संग्रहीत कार्यविधियाँ किसी अनुप्रयोग में प्रदर्शन में सुधार कर सकती हैं, क्योंकि संग्रहीत कार्यविधि के बनते ही इसे पार्स और अनुकूलित किया जाता है, और फिर स्मृति में संग्रहीत किया जाता है। संग्रहीत प्रक्रिया के माध्यम से एक सशर्त क्वेरी चलाना बेहद तेज़ हो सकता है - एक ऐसे एप्लिकेशन की तुलना में जो पूरे नेटवर्क में एक क्वेरी भेजता है, SQL सर्वर पर, फिर पूरे नेटवर्क में सभी डेटा वापस कर दिया जाता है ताकि यह इसके माध्यम से फ़िल्टर कर सके, और बाहर निकाल सके केवल वे रिकॉर्ड जिनमें उसकी रुचि है।

संग्रहीत कार्यविधियों के लाभ

यहाँ संग्रहीत कार्यविधियों का उपयोग करने के कुछ मुख्य लाभ दिए गए हैं:

लाभ स्पष्टीकरण
मॉड्यूलर प्रोग्रामिंग आप एक संग्रहित प्रक्रिया को एक बार लिख सकते हैं, फिर उसे एप्लिकेशन के विभिन्न हिस्सों से (और यहां तक ​​कि कई एप्लिकेशन से भी) बार-बार कॉल कर सकते हैं।
प्रदर्शन संग्रहीत कार्यविधियाँ तेज़ कोड निष्पादन प्रदान करती हैं और नेटवर्क ट्रैफ़िक को कम करती हैं।
  • तेजी से निष्पादन:जैसे ही संग्रहीत कार्यविधियाँ बनाई जाती हैं, उन्हें पार्स और अनुकूलित किया जाता है और संग्रहीत कार्यविधि को स्मृति में संग्रहीत किया जाता है। इसका मतलब है कि यह आपके एप्लिकेशन से SQL सर्वर पर SQL कोड की कई पंक्तियों को भेजने की तुलना में बहुत तेज़ी से निष्पादित करेगा। ऐसा करने के लिए SQL सर्वर को आपके SQL कोड को हर बार चलने पर संकलित और अनुकूलित करने की आवश्यकता होती है।
  • कम नेटवर्क ट्रैफ़िक:यदि आप अपने SQL सर्वर पर नेटवर्क पर SQL कोड की कई पंक्तियाँ भेजते हैं, तो यह नेटवर्क प्रदर्शन पर प्रभाव डालेगा। यह विशेष रूप से सच है यदि आपके पास SQL ​​​​कोड की सैकड़ों लाइनें हैं और/या आपके आवेदन पर बहुत सारी गतिविधियां हैं। SQL सर्वर पर कोड चलाना (संग्रहीत प्रक्रिया के रूप में) इस कोड को नेटवर्क पर भेजने की आवश्यकता को समाप्त करता है। केवल नेटवर्क ट्रैफ़िक आपूर्ति किए गए पैरामीटर और किसी भी क्वेरी के परिणाम होंगे।
सुरक्षा उपयोगकर्ता किसी भी कथन को सीधे निष्पादित किए बिना संग्रहीत कार्यविधि को निष्पादित कर सकते हैं। इसलिए, एक संग्रहीत कार्यविधि उन उपयोगकर्ताओं के लिए उन्नत डेटाबेस कार्यक्षमता प्रदान कर सकती है जिनके पास सामान्य रूप से इन कार्यों तक पहुंच नहीं होगी, लेकिन यह कार्यक्षमता कड़े नियंत्रित तरीके से उपलब्ध कराई गई है।

एक संग्रहित प्रक्रिया कैसे बनाएं

एक संग्रहीत कार्यविधि बनाने के लिए, CREATE PROCEDURE . का उपयोग करें कथन, उसके बाद कोड जो संग्रहीत कार्यविधि बनाता है। यदि आपकी संग्रहीत प्रक्रिया पैरामीटर स्वीकार करने जा रही है, तो उन्हें नाम के बाद शामिल करने की आवश्यकता है।

CREATE PROCEDURE myStoredProcedure AS
...

OR

CREATE PROCEDURE myStoredProcedure @ParameterName DataType AS
...

उदाहरण

यहां एक संग्रहीत कार्यविधि बनाने और फिर उस संग्रहीत कार्यविधि को निष्पादित करने का एक उदाहरण दिया गया है।

  1. संग्रहीत प्रक्रिया बनाएं

    इस पूरे ट्यूटोरियल में हमारे द्वारा बनाए गए संगीत डेटाबेस के विरुद्ध निम्नलिखित कथन चलाएँ।

    यह उदाहरण एक संग्रहीत कार्यविधि बनाता है जिसे एल्बमफ्रॉमआर्टिस्ट कहा जाता है। यह एक कलाकार से सभी एल्बमों का चयन करता है जो निर्दिष्ट किया जाता है जब संग्रहीत कार्यविधि चलती है।

    CREATE PROCEDURE spAlbumsFromArtist 
    	@ArtistName varchar(255)
    AS
    	SELECT AlbumName, ReleaseDate
    	FROM Albums
    		INNER JOIN Artists
    		ON Albums.ArtistId = Artists.ArtistId 
    	WHERE Artists.ArtistName = @ArtistName;
    GO
  2. संग्रहीत प्रक्रिया देखें

    प्रोग्रामेबिलिटी> संग्रहित प्रक्रियाओं . का विस्तार करें अपने नए बनाए गए संग्रहीत कार्यविधि को देखने के लिए लागू डेटाबेस के अंतर्गत नोड। आप संग्रहीत कार्यविधि के पैरामीटर . का विस्तार भी कर सकते हैं जब आप इसे चलाते हैं तो आपको पास करने के लिए आवश्यक पैरामीटर देखने के लिए नोड।

  3. संग्रहीत प्रक्रिया निष्पादित करें

    अब जबकि संग्रहीत कार्यविधि बन गई है, आप इसे EXECUTE . का उपयोग करके चला सकते हैं कथन और किसी भी आवश्यक पैरामीटर को पारित करना।

    हमारे उदाहरण में, हमें कलाकार का नाम पास करना होगा।

    EXECUTE spAlbumsFromArtist @ArtistName = "Devin Townsend";

    वैकल्पिक रूप से, आप पैरामीटर पास करते समय पैरामीटर नाम को छोड़ सकते हैं। इस तरह:

    EXECUTE spAlbumsFromArtist "Devin Townsend";

संग्रहीत प्रक्रिया में बदलाव करें

आप अपनी संग्रहीत कार्यविधि को ALTER PROCEDURE . के साथ संशोधित कर सकते हैं बयान। जैसे जब आप किसी दृश्य को बदलते हैं, तो आप केवल नई संग्रहीत कार्यविधि परिभाषा को लागू करके संग्रहीत कार्यविधि को बदल सकते हैं।

  1. संग्रहीत प्रक्रिया में बदलाव करें

    निम्नलिखित कथन चलाएँ। यह संग्रहीत कार्यविधि द्वारा लौटाए गए परिणामों में एक नया स्तंभ जोड़ता है। हम कॉलम नामों में उपनाम भी जोड़ते हैं।

    ALTER PROCEDURE spAlbumsFromArtist 
    	@ArtistName varchar(255)
    AS
    	SELECT 
            al.AlbumName, 
            al.ReleaseDate, 
            g.Genre
    	FROM Albums al
    		INNER JOIN Artists ar
    		ON al.ArtistId = ar.ArtistId 
    		INNER JOIN Genres g
    		ON g.GenreId = al.GenreId 
    	WHERE ar.ArtistName = @ArtistName;
    GO
  2. संग्रहीत प्रक्रिया निष्पादित करें

    अब जबकि हमने Genre जोड़ लिया है कॉलम को देखने के लिए, संग्रहीत प्रक्रिया अब उस कॉलम को वापस कर देती है जब हम इसे निष्पादित करते हैं।

    EXECUTE spAlbumsFromArtist @ArtistName = "Devin Townsend";

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. आशावादी बनाम निराशावादी लॉकिंग

  2. SQL सर्वर में शीर्ष के साथ संबंधों का उपयोग कैसे करें - SQL सर्वर / TSQL ट्यूटोरियल भाग 114

  3. छवि स्टोर के रूप में SQL सर्वर का उपयोग करना

  4. SQL सर्वर में क्रमपरिवर्तन उत्पन्न करने का सबसे सुंदर तरीका

  5. SQL सर्वर उपयोग के लिए Azure वर्चुअल मशीनें