Oracle PL / SQL स्टोर की गई प्रक्रिया और amp; उदाहरणों के साथ कार्य

विषय - सूची:

Anonim

इस ट्यूटोरियल में, आप नामित ब्लॉकों (प्रक्रियाओं और कार्यों) को बनाने और निष्पादित करने के तरीके पर विस्तृत विवरण देखने जा रहे हैं।

प्रक्रिया और कार्य उपप्रोग्राम हैं जो डेटाबेस में ऑब्जेक्ट्स के रूप में बनाए और सहेजे जा सकते हैं। उन्हें अन्य ब्लॉकों के अंदर भी बुलाया या संदर्भित किया जा सकता है।

इसके अलावा, हम इन दो उपप्रोग्राम के बीच प्रमुख अंतर को कवर करेंगे। साथ ही, हम Oracle निर्मित कार्यों के बारे में चर्चा करने जा रहे हैं।

इस Oracle स्टोर्ड प्रोसीजर ट्यूटोरियल में, आप सीखेंगे-

  • PL / SQL उपप्रोग्राम में शब्दावली
  • पीएल / एसक्यूएल में प्रक्रिया क्या है?
  • समारोह क्या है?
  • प्रक्रिया और कार्य के बीच समानताएं
  • प्रक्रिया बनाम समारोह: मुख्य अंतर
  • अंतर्निहित कार्य PL / SQL में

PL / SQL उपप्रोग्राम में शब्दावली

इससे पहले कि हम PL / SQL उपप्रोग्राम के बारे में जानें, हम उन विभिन्न शब्दावली पर चर्चा करेंगे जो इन उपप्रोग्राम का हिस्सा हैं। नीचे ऐसी शब्दावली दी गई है जिस पर हम चर्चा करने जा रहे हैं।

पैरामीटर:

पैरामीटर किसी भी मान्य PL / SQL डेटाटाइप का चर या प्लेसहोल्डर है जिसके माध्यम से PL / SQL उपप्रोग्राम मुख्य कोड के साथ मूल्यों का आदान-प्रदान करता है। यह पैरामीटर उपप्रोग्राम को इनपुट देने और इन उपप्रोग्राम से निकालने की अनुमति देता है।

  • निर्माण के समय इन मापदंडों को उपप्रोग्राम के साथ परिभाषित किया जाना चाहिए।
  • इन मापदंडों को उपप्रोग्राम के साथ मूल्यों को इंटरैक्ट करने के लिए इन सबप्रोग्राम्स के कॉलिंग स्टेटमेंट को शामिल किया गया है।
  • सबप्रोग्राम में पैरामीटर का डेटाटाइप और कॉलिंग स्टेटमेंट समान होना चाहिए।
  • डेटाटाइप का आकार पैरामीटर घोषणा के समय का उल्लेख नहीं करना चाहिए, क्योंकि आकार इस प्रकार के लिए गतिशील है।

उनके उद्देश्य के आधार पर मापदंडों को वर्गीकृत किया जाता है

  1. व्यास में
  2. बाहर पैरामीटर
  3. बाहर पैरामीटर में

पैरामीटर में:

  • इस पैरामीटर का उपयोग उपप्रोग्राम में इनपुट देने के लिए किया जाता है।
  • यह उपप्रोग्राम के अंदर एक केवल-पढ़ने योग्य चर है। उनके मूल्यों को उपप्रोग्राम के अंदर नहीं बदला जा सकता है।
  • कॉलिंग स्टेटमेंट में, ये पैरामीटर एक चर या शाब्दिक मूल्य या एक अभिव्यक्ति हो सकते हैं, उदाहरण के लिए, यह अंकगणितीय अभिव्यक्ति हो सकती है जैसे '5 * 8' या 'ए / बी' जहां 'ए' और 'बी' चर हैं ।
  • डिफ़ॉल्ट रूप से, पैरामीटर IN प्रकार के होते हैं।

बाहर पैरामीटर:

  • इस पैरामीटर का उपयोग उपप्रोग्राम से आउटपुट प्राप्त करने के लिए किया जाता है।
  • यह उपप्रोग्राम के अंदर एक पढ़ा-लिखा चर है। उपप्रोग्राम के अंदर उनके मूल्यों को बदला जा सकता है।
  • कॉलिंग स्टेटमेंट में, इन मापदंडों को हमेशा वर्तमान उपप्रोग्राम से मान रखने के लिए एक चर होना चाहिए।

बाहर पैरामीटर में:

  • यह पैरामीटर इनपुट देने और सबप्रोग्राम से आउटपुट प्राप्त करने के लिए उपयोग किया जाता है।
  • यह उपप्रोग्राम के अंदर एक पढ़ा-लिखा चर है। उपप्रोग्राम के अंदर उनके मूल्यों को बदला जा सकता है।
  • कॉलिंग स्टेटमेंट में, इन मापदंडों को हमेशा उपप्रोग्राम से मान रखने के लिए एक चर होना चाहिए।

उपप्रोग्राम बनाते समय इन पैरामीटर प्रकार का उल्लेख किया जाना चाहिए।

वापसी

RETURN वह कीवर्ड है जो कंपाइलर को उपप्रोग्राम से कॉलिंग स्टेटमेंट पर नियंत्रण स्विच करने का निर्देश देता है। सबप्रोग्राम में RETURN का अर्थ है कि नियंत्रण को उपप्रोग्राम से बाहर निकलने की आवश्यकता है। एक बार नियंत्रक को सबप्रोग्राम में RETURN कीवर्ड मिल जाता है, इसके बाद का कोड छोड़ दिया जाएगा।

आम तौर पर, माता-पिता या मुख्य ब्लॉक उपप्रोग्राम को कॉल करेंगे, और फिर नियंत्रण उन मूल ब्लॉक से उपप्रोग्राम में स्थानांतरित हो जाएगा। उपप्रोग्राम में RETURN नियंत्रण को उनके मूल ब्लॉक में वापस कर देगा। कार्यों के मामले में RETURN विवरण भी मान लौटाता है। फ़ंक्शन मान की घोषणा के समय इस मान का डेटाटाइप हमेशा उल्लेखित होता है। डेटाटाइप किसी भी मान्य PL / SQL डेटा प्रकार का हो सकता है।

पीएल / एसक्यूएल में प्रक्रिया क्या है?

पीएल / एसक्यूएल में एक प्रक्रिया एक उपप्रोग्राम इकाई है जिसमें पीएल / एसक्यूएल बयानों का एक समूह होता है जिसे नाम से बुलाया जा सकता है। पीएल / एसक्यूएल में प्रत्येक प्रक्रिया का अपना अनूठा नाम होता है जिसके द्वारा इसे संदर्भित और कॉल किया जा सकता है। ओरेकल डेटाबेस में इस उपप्रोग्राम इकाई को डेटाबेस ऑब्जेक्ट के रूप में संग्रहीत किया जाता है।

नोट: उपप्रोग्राम एक प्रक्रिया के अलावा कुछ भी नहीं है, और इसे आवश्यकता के अनुसार मैन्युअल रूप से बनाने की आवश्यकता है। एक बार बनने के बाद उन्हें डेटाबेस ऑब्जेक्ट के रूप में संग्रहीत किया जाएगा।

नीचे पीएल / एसक्यूएल में प्रक्रिया उपप्रोग्राम इकाई की विशेषताएं हैं:

  • प्रक्रियाएँ प्रोग्राम के स्टैंडअलोन ब्लॉक हैं जिन्हें डेटाबेस में संग्रहीत किया जा सकता है।
  • पीएल / एसक्यूएल स्टेटमेंट्स को निष्पादित करने के लिए, उनके नाम का उल्लेख करके, इन PLSQL प्रक्रियाओं को कॉल किया जा सकता है।
  • इसका उपयोग मुख्य रूप से PL / SQL में एक प्रक्रिया को निष्पादित करने के लिए किया जाता है।
  • इसमें नेस्टेड ब्लॉक हो सकते हैं, या इसे अन्य ब्लॉक या पैकेज के अंदर परिभाषित और नेस्टेड किया जा सकता है।
  • इसमें डिक्लेरेशन पार्ट (वैकल्पिक), निष्पादन भाग, अपवाद हैंडलिंग भाग (वैकल्पिक) शामिल है।
  • मान ओरेकल प्रक्रिया में पारित किया जा सकता है या मापदंडों के माध्यम से प्रक्रिया से लाया जा सकता है।
  • इन मापदंडों को कॉलिंग स्टेटमेंट में शामिल किया जाना चाहिए।
  • SQL में एक प्रक्रिया में कॉलिंग ब्लॉक पर नियंत्रण वापस करने के लिए एक RETURN स्टेटमेंट हो सकता है, लेकिन यह RETURN स्टेटमेंट के माध्यम से किसी भी मान को वापस नहीं कर सकता है।
  • प्रक्रियाओं को सीधे चयनित बयानों से नहीं बुलाया जा सकता है। उन्हें दूसरे ब्लॉक से या EXEC कीवर्ड के जरिए बुलाया जा सकता है।

वाक्य - विन्यास:

CREATE OR REPLACE PROCEDURE
(
… )[ IS | AS ]BEGINEXCEPTIONEND;
  • क्रीक प्रक्रिया Oracle में नई प्रक्रिया बनाने के लिए संकलक को निर्देश देती है। कीवर्ड 'OR REPLACE' संकलन को मौजूदा प्रक्रिया (यदि कोई हो) को वर्तमान के साथ बदलने का निर्देश देता है।
  • प्रक्रिया नाम अद्वितीय होना चाहिए।
  • कीवर्ड 'आईएस' का उपयोग तब किया जाएगा, जब ओरेकल में संग्रहीत प्रक्रिया को कुछ अन्य ब्लॉकों में घोंसला बनाया जाए। यदि प्रक्रिया स्टैंडअलोन है तो 'एएस' का उपयोग किया जाएगा। इस कोडिंग मानक के अलावा, दोनों का एक ही अर्थ है।

उदाहरण 1: प्रक्रिया बनाना और EXEC का उपयोग करके इसे कॉल करना

इस उदाहरण में, हम एक Oracle प्रक्रिया बनाने जा रहे हैं जो इनपुट के रूप में नाम लेती है और स्वागत संदेश को आउटपुट के रूप में प्रिंट करती है। हम कॉल प्रक्रिया के लिए EXEC कमांड का उपयोग करने जा रहे हैं।

CREATE OR REPLACE PROCEDURE welcome_msg (p_name IN VARCHAR2)ISBEGINdbms_output.put_line (‘Welcome '|| p_name);END;/EXEC welcome_msg (‘Guru99’);

कोड स्पष्टीकरण:

  • कोड लाइन 1 : 'welcome_msg' नाम के साथ प्रक्रिया बनाना और 'IN' प्रकार के एक पैरामीटर 'p_name' के साथ।
  • कोड लाइन 4 : इनपुट नाम को संक्षिप्त करके स्वागत संदेश को प्रिंट करना।
  • प्रक्रिया सफलतापूर्वक संकलित की गई है।
  • कोड लाइन 7 : EXEC कमांड का उपयोग करके प्रक्रिया को कॉल करना 'गुरु99' पैरामीटर के साथ। प्रक्रिया निष्पादित की जाती है, और संदेश "वेलकम गुरू 99" के रूप में प्रिंट किया जाता है।

समारोह क्या है?

फ़ंक्शंस एक स्टैंडअलोन PL / SQL उपप्रोग्राम है। पीएल / एसक्यूएल प्रक्रिया की तरह, फ़ंक्शन का एक अनूठा नाम है जिसके द्वारा इसे संदर्भित किया जा सकता है। इन्हें PL / SQL डेटाबेस ऑब्जेक्ट के रूप में संग्रहीत किया जाता है। नीचे कार्यों की कुछ विशेषताएं दी गई हैं।

  • फ़ंक्शंस एक स्टैंडअलोन ब्लॉक है जो मुख्य रूप से गणना उद्देश्य के लिए उपयोग किया जाता है।
  • मान वापस करने के लिए फ़ंक्शन RETURN कीवर्ड का उपयोग करते हैं, और इसका डेटा स्वरूप निर्माण के समय परिभाषित किया गया है।
  • एक फ़ंक्शन को या तो एक मूल्य वापस करना चाहिए या अपवाद उठाना चाहिए, अर्थात कार्यों में रिटर्न अनिवार्य है।
  • डीएमएल स्टेटमेंट वाले फ़ंक्शन को सीधे सीधे क्वेरी में नहीं बुलाया जा सकता है जबकि डीएमएल ऑपरेशन के साथ फ़ंक्शन केवल अन्य पीएल / एसक्यूएल ब्लॉकों से कॉल किया जा सकता है।
  • इसमें नेस्टेड ब्लॉक हो सकते हैं, या इसे अन्य ब्लॉक या पैकेज के अंदर परिभाषित और नेस्टेड किया जा सकता है।
  • इसमें डिक्लेरेशन पार्ट (वैकल्पिक), निष्पादन भाग, अपवाद हैंडलिंग भाग (वैकल्पिक) शामिल है।
  • मान फ़ंक्शन में पारित किए जा सकते हैं या पैरामीटर के माध्यम से प्रक्रिया से प्राप्त किए जा सकते हैं।
  • इन मापदंडों को कॉलिंग स्टेटमेंट में शामिल किया जाना चाहिए।
  • एक PLSQL फ़ंक्शन RETURN का उपयोग करने के अलावा OUT मापदंडों के माध्यम से मान भी लौटा सकता है।
  • चूंकि यह हमेशा मान लौटाएगा, इसलिए कॉलिंग स्टेटमेंट में यह हमेशा चर को पॉप्युलेट करने के लिए असाइनमेंट ऑपरेटर के साथ होता है।

वाक्य - विन्यास

CREATE OR REPLACE FUNCTION
(
)RETURN [ IS | AS ]BEGINEXCEPTIONEND; 
  • बनाएँ समारोह संकलक को एक नया फ़ंक्शन बनाने का निर्देश देता है। कीवर्ड 'OR REPLACE' संकलक को मौजूदा फ़ंक्शन (यदि कोई हो) को वर्तमान के साथ बदलने का निर्देश देता है।
  • समारोह का नाम अद्वितीय होना चाहिए।
  • RETURN डेटाटाइप का उल्लेख किया जाना चाहिए।
  • कीवर्ड 'IS' का उपयोग तब किया जाएगा, जब प्रक्रिया कुछ अन्य ब्लॉकों में नस्ट हो जाए। यदि प्रक्रिया स्टैंडअलोन है तो 'एएस' का उपयोग किया जाएगा। इस कोडिंग मानक के अलावा, दोनों का एक ही अर्थ है।

उदाहरण 1: फ़ंक्शन बनाना और बेनामी ब्लॉक का उपयोग करके इसे कॉल करना

इस कार्यक्रम में, हम एक फ़ंक्शन बनाने जा रहे हैं जो इनपुट के रूप में नाम लेता है और आउटपुट के रूप में स्वागत संदेश देता है। हम फ़ंक्शन को कॉल करने के लिए अनाम ब्लॉक और चयन कथन का उपयोग करने जा रहे हैं।

CREATE OR REPLACE FUNCTION welcome_msgJune ( p_name IN VARCHAR2) RETURN VAR.CHAR2ISBEGINRETURN (‘Welcome ‘|| p_name);END;/DECLARElv_msg VARCHAR2(250);BEGINlv_msg := welcome_msg_func (‘Guru99’);dbms_output.put_line(lv_msg);END;SELECT welcome_msg_func(‘Guru99:) FROM DUAL;

कोड स्पष्टीकरण:

  • कोड पंक्ति 1 : 'welcome_msg_func' नाम के साथ Oracle फ़ंक्शन बनाना और 'IN' प्रकार के एक पैरामीटर 'p_name' के साथ।
  • कोड लाइन 2 : वापसी प्रकार को VARCHAR2 घोषित करना
  • कोड लाइन 5 : संक्षिप्त मान 'वेलकम' और पैरामीटर मान लौटाते हैं।
  • कोड पंक्ति 8 : उपरोक्त फ़ंक्शन को कॉल करने के लिए अनाम ब्लॉक।
  • कोड पंक्ति 9 : फ़ंक्शन के रिटर्न डेटाटाइप के समान चर के साथ चर की घोषणा करना।
  • कोड लाइन 11 : फ़ंक्शन को कॉल करना और रिटर्न मान को चर 'lv_msg' में बदलना।
  • कोड लाइन 12 : वेरिएबल वैल्यू को प्रिंट करना। यहां आपको मिलने वाला आउटपुट "वेलकम गुरु 99" है
  • कोड लाइन 14 : सेलेक्ट स्टेटमेंट के माध्यम से उसी फ़ंक्शन को कॉल करना। रिटर्न मान को सीधे मानक आउटपुट के लिए निर्देशित किया जाता है।

प्रक्रिया और कार्य के बीच समानताएं

  • दोनों को अन्य पीएल / एसक्यूएल ब्लॉकों से बुलाया जा सकता है।
  • यदि सबप्रोग्राम में उठाए गए अपवाद को उपप्रोग्राम अपवाद हैंडलिंग अनुभाग में नहीं संभाला जाता है, तो यह कॉलिंग ब्लॉक को प्रचारित करेगा।
  • दोनों में आवश्यकतानुसार कई पैरामीटर हो सकते हैं।
  • दोनों को PL / SQL में डेटाबेस ऑब्जेक्ट के रूप में माना जाता है।

प्रक्रिया बनाम समारोह: मुख्य अंतर

प्रक्रिया समारोह
  • मुख्य रूप से एक निश्चित प्रक्रिया को निष्पादित करने के लिए उपयोग किया जाता है
  • मुख्य रूप से कुछ गणना करने के लिए उपयोग किया जाता है
  • SELECT स्टेटमेंट में कॉल नहीं कर सकते
  • ऐसा फ़ंक्शन जिसमें कोई DML कथन नहीं हैं, को SELECT कथन में कहा जा सकता है
  • मान वापस करने के लिए OUT पैरामीटर का उपयोग करें
  • मान वापस करने के लिए RETURN का उपयोग करें
  • मान लौटाना अनिवार्य नहीं है
  • मान लौटाना अनिवार्य है
  • RETURN बस उपप्रोग्राम से नियंत्रण से बाहर निकल जाएगा।
  • RETURN उपप्रोग्राम से नियंत्रण से बाहर निकल जाएगा और मान भी लौटाएगा
  • सृजन के समय रिटर्न डेटाटाइप निर्दिष्ट नहीं किया जाएगा
  • सृजन के समय रिटर्न डेटाटाइप अनिवार्य है

अंतर्निहित कार्य PL / SQL में

PL / SQL में स्ट्रिंग्स और डेट डेटाइप के साथ काम करने के लिए विभिन्न अंतर्निहित कार्य शामिल हैं। यहां हम आमतौर पर उपयोग किए जाने वाले कार्यों और उनके उपयोग को देखने जा रहे हैं।

रूपांतरण कार्य

इन अंतर्निहित कार्यों का उपयोग एक डेटाटाइप को दूसरे डेटाटाइप में बदलने के लिए किया जाता है।

कार्य का नाम प्रयोग उदाहरण
TO_CHAR अन्य डेटाटाइप को चरित्र डेटा टाइप में रूपांतरित करता है TO_CHAR (123);
TO_DATE (स्ट्रिंग, प्रारूप) दी गई स्ट्रिंग को आज तक परिवर्तित करता है। स्ट्रिंग को प्रारूप के साथ मेल खाना चाहिए। TO_DATE ('2015-JAN-15', 'YYYY-MON-DD'); आउटपुट: 1/15/2015
TO_NUMBER (पाठ, प्रारूप) पाठ को दिए गए प्रारूप के नंबर प्रकार में परिवर्तित करता है। Informat '9' अंकों की संख्या को दर्शाता है TO_NUMBER ('1234', '9999') को दोहरे से चुनें; आउटपुट: 1234 दोहरी से TO_NUMBER ('1,234.45', '9,999.99') का चयन करें; आउटपुट: 1234

स्ट्रिंग फ़ंक्शंस

ये ऐसे कार्य हैं जो वर्ण डेटाटाइप पर उपयोग किए जाते हैं।

कार्य का नाम प्रयोग उदाहरण
INSTR (पाठ, स्ट्रिंग, प्रारंभ, रोष) दिए गए स्ट्रिंग में विशेष पाठ की स्थिति देता है।
  • पाठ - मुख्य स्ट्रिंग
  • स्ट्रिंग - पाठ जिसे खोजा जाना है
  • प्रारंभ - खोज की प्रारंभिक स्थिति (वैकल्पिक)
  • खोज स्ट्रिंग के अनुसार - घटना (वैकल्पिक)
INSTR चयन दोहरी से ( 'हवाई जहाज़', 'ई', 2,1) आउटपुट : 2 INSTR चयन दोहरी आउटपुट से ( 'हवाई जहाज़', 'ई', 2,2): 9 (2 nd ई के घटित होने की)
SUBSTR (पाठ, प्रारंभ, लंबाई) मुख्य स्ट्रिंग के प्रतिस्थापन मूल्य देता है।
  • पाठ - मुख्य स्ट्रिंग
  • शुरू - स्थिति शुरू
  • लंबाई - लंबाई उप-कड़ा होना
दोहरी आउटपुट से चयनित पदार्थ ('हवाई जहाज', 1,7) : एरोप्ला
उत्तर प्रदेश (पाठ) दिए गए पाठ के बड़े अक्षर को लौटाता है दोहरे से ऊपरी ('गुरु 99') का चयन करें; आउटपुट : GURU99
कम (पाठ) दिए गए पाठ के निचले भाग को लौटाता है दोहरे से निचले ('हवाई जहाज') का चयन करें; आउटपुट : हवाई जहाज
INITCAP (पाठ) ऊपरी मामले में शुरुआती अक्षर के साथ दिए गए पाठ को वापस करता है। का चयन करें दोहरी से ( 'guru99') आउटपुट : दोहरी से Guru99 करें ( 'मेरी कहानी') आउटपुट : माई स्टोरी
LENGTH (पाठ) दिए गए स्ट्रिंग की लंबाई लौटाता है दोहरी से LENGTH ('गुरु99') का चयन करें; आउटपुट : 6
LPAD (पाठ, लंबाई, पैड_चर) दिए गए चरित्र के साथ दी गई लंबाई (कुल स्ट्रिंग) के लिए बाईं ओर स्ट्रिंग को पैड करें दोहरे से LPAD ('गुरु 99', 10, '$') का चयन करें; आउटपुट : $ $ $ $ $ $ $
RPAD (पाठ, लंबाई, पैड_चर) दिए गए चरित्र के साथ दिए गए लंबाई (कुल स्ट्रिंग) के लिए दाईं ओर की स्ट्रिंग को पैड करें दोहरी आउटपुट से RPAD ('गुरु99', 10, '-') चुनें : गुरु99 ----
LTRIM (पाठ) पाठ से प्रमुख सफेद स्थान को चलाता है दोहरे से LTRIM ('गुरु 99') का चयन करें; आउटपुट : गुरु 99
RTRIM (पाठ) पाठ से सफेद स्थान को पीछे छोड़ता है दोहरी से RTRIM ('गुरु 99') का चयन करें; आउटपुट ; गुरु ९९

दिनांक कार्य

ये ऐसे कार्य हैं जो तारीखों के साथ हेरफेर करने के लिए उपयोग किए जाते हैं।

कार्य का नाम प्रयोग उदाहरण
ADD_MONTHS (दिनांक, सं। महीने) दिए गए महीनों को तिथि में जोड़ता है ADD_MONTH ('2015-01-01', 5); आउटपुट : 05/01/2015
सहवास करना सर्वर की वर्तमान तिथि और समय लौटाता है दोहरे से SYSDATE का चयन करें; आउटपुट : 10/4/2015 2:11:43 PM
TRUNC निम्न संभावित मान के लिए दिनांक चर का दौर दोहरी से sysdate, TRUNC (sysdate) का चयन करें; आउटपुट : 10/4/2015 2:12:39 PM 10/4/2015
गोल तिथि को निकटतम सीमा तक या तो उच्च या निम्न सीमा पर ले जाता है दोहरी आउटपुट से sysdate, ROUND (sysdate) का चयन करें : 10/4/2015 2:14:34 PM 10/5/2015
MONTHS_BETWEEN दो तिथियों के बीच महीनों की संख्या लौटाता है दोहरी आउटपुट से MONTHS_BETWEEN (sysdate + 60, sysdate) का चयन करें : 2

सारांश

इस अध्याय में, हमने निम्नलिखित सीखा है।

  • प्रक्रिया और इसे कॉल करने के विभिन्न तरीकों को कैसे बनाएं
  • फ़ंक्शन और इसे कॉल करने के विभिन्न तरीके कैसे बनाएं
  • प्रक्रिया और कार्य के बीच समानताएं और अंतर
  • पैरामीटर और RETURN PL / SQL उपप्रोग्राम में सामान्य शब्दावली
  • Oracle PL / SQL में सामान्य अंतर्निहित कार्य