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

NAME_IN Oracle D2k फ़ॉर्म में अंतर्निर्मित

NAME_IN Oracle D2k फ़ॉर्म में अंतर्निर्मित

विवरण
संकेतित चर का मान लौटाता है।
लौटा गया मान वर्ण स्ट्रिंग के रूप में होता है। हालांकि, आप NAME_IN का उपयोग
संख्याओं और तिथियों को वर्ण स्ट्रिंग के रूप में वापस करने के लिए कर सकते हैं और फिर उन स्ट्रिंग्स को उपयुक्त डेटा प्रकारों में परिवर्तित कर सकते हैं। आप
लौटाए गए मान का उपयोग कर सकते हैं क्योंकि आप निष्पादन योग्य कथन के भीतर किसी भी मान का उपयोग करेंगे।
यदि आप NAME_IN फ़ंक्शन को नेस्ट करते हैं, तो फ़ॉर्म बिल्डर व्यक्तिगत NAME_IN फ़ंक्शन का मूल्यांकन करता है
सबसे बाहरी से सबसे बाहरी तक एक।
वाक्यविन्यास
FUNCTION NAME_IN
(variable_name VARCHAR2);
अंतर्निहित प्रकार अप्रतिबंधित फ़ंक्शन
VARCHAR2 लौटाता है
क्वेरी मोड दर्ज करें हाँ
पैरामीटर
variable_name निर्दिष्ट करता है एक वैध चर या पाठ आइटम। नाम का डेटा प्रकार है
VARCHAR2.
उपयोग नोट
यदि लौटाया गया मान दिनांक स्ट्रिंग है, तो NAME_IN
BUILTIN_DATE_FORMAT प्रॉपर्टी में निर्दिष्ट प्रारूप मास्क का उपयोग करेगा। यदि DATE_FORMAT_COMPATIBILITY_MODE गुण
4.5 पर सेट है, तो लौटाए गए स्ट्रिंग को प्रारूपित करने के लिए डिफ़ॉल्ट अमेरिकी प्रारूप का उपयोग किया जाता है।
NAME_IN उदाहरण
/*
** बिल्ट-इन:NAME_IN
** उदाहरण:ग्लोबल वेरिएबल्स का उपयोग करके लास्ट-इन-फर्स्ट-आउट
** स्टैक मैकेनिज्म का सरल कार्यान्वयन।
** प्रत्येक नामित स्टैक के लिए, एक वैश्विक चर
** GLOBAL._PTR स्टैक पर सबसे बड़े
** तत्व को इंगित करता है। जैसे ही नए तत्व जोड़े जाते हैं, PUSH इस
** मान को बढ़ा देता है। मान
** नामित स्टैक पर पुश किए गए या पॉप किए गए हैं
** वास्तव में
** सुविधाजनक रूप से बनाए गए नाम:GLOBAL के GLOBAL चर में संग्रहीत हैं।nnn
** जहां 'nnn'
** स्टैक पर मौजूद तत्व की संख्या है।
**
** उपयोग:
** Push('MYSTACKNAME' , '1');
** Push('MYSTACKNAME', '2');
**
** str_var :=Pop('MYSTACKNAME'); -- हो जाता है '2'
** str_var :=Pop('MYSTACKNAME'); -- हो जाता है '1'
** str_var :=Pop('MYSTACKNAME'); -- 'EOS' हो जाता है
**
*/
PROCEDURE पुश ( the_stackname VARCHAR2,
the_value VARCHAR2 ) IS
ptr_name VARCHAR2(40); - इस स्टैक का पॉइंटर नाम
उपसर्ग VARCHAR2(40); -- भंडारण संस्करणों के लिए सामान्य उपसर्ग
elt_name VARCHAR2(40); -- भंडारण तत्व का नाम
new_idx VARCHAR2(4); -- नया स्टैक पॉइंटर मान
BEGIN
/*
** हमारे द्वारा संदर्भित किसी भी नामित स्टैक के लिए, वैश्विक
** स्टैक के मानों को संग्रहीत करने के लिए उपयोग किए जाने वाले चर और
** स्टैक के पॉइंटर सभी एक सामान्य उपसर्ग से शुरू होते हैं:
** GLOBAL।
*/
prefix :='GLOBAL.' || the_stackname;
/*
** इस नामित स्टैक का पॉइंटर
** GLOBAL में रहता है।_PTR याद रखें कि यह पॉइंटर का *name*
** है।
*/
ptr_name :=उपसर्ग || '_PTR';
/*
** डिफ़ॉल्ट मान
** के साथ स्टैक पॉइंटर को इनिशियलाइज़ करें यदि स्टैक पॉइंटर पहले मौजूद नहीं था, यानी
** ग्लोबल ._PTR अभी बनाया जाना था।
*/
Default_Value('0', ptr_name );
/*
** चूंकि हम एक को आगे बढ़ा रहे हैं स्टैक पर नया तत्व,
** इस नए तत्व की स्थिति को दर्शाने के लिए स्टैक पॉइंटर को बढ़ाएँ
**। याद रखें कि वैश्विक चर
** हमेशा VARCHAR2 प्रकार के होते हैं, इसलिए हमें किसी भी गणना से पहले उन्हें TO_NUMBER
** में बदलना होगा।
*/
new_idx :=TO_CHAR( TO_NUMBER( Name_In) ( ptr_name ) ) + 1 );
Copy(new_idx , ptr_name );
/*
** वैश्विक चर का नाम निर्धारित करें जो
** पास किए गए मान को संग्रहीत करेगा in, GLOBAL। :=उपसर्ग||new_idx;
कॉपी करें( the_value , elt_name );
END;
FUNCTION पॉप ( the_stackname VARCHAR2)
रिटर्न VARCHAR2 IS
ptr_name VARCHAR2(40); - इस स्टैक का पॉइंटर नाम
उपसर्ग VARCHAR2(40); -- भंडारण संस्करणों के लिए सामान्य उपसर्ग
elt_name VARCHAR2(40); -- भंडारण तत्व का नाम
new_idx VARCHAR2(4); -- नया स्टैक पॉइंटर मान
cur_idx VARCHAR2(4); -- वर्तमान स्टैक पॉइंटर मान
the_val VARCHAR2(255);
EMPTY_STACK CONSTANT VARCHAR2(3):='EOS';
NO_SUCH_STACK CONSTANT VARCHAR2(3):='NSS';
BEGIN
/*
** हमारे द्वारा संदर्भित किसी भी नामित स्टैक के लिए, वैश्विक
** स्टैक के मानों को संग्रहीत करने के लिए उपयोग किए जाने वाले चर और
** स्टैक के पॉइंटर सभी शुरू होते हैं एक सामान्य उपसर्ग के साथ:
** GLOBAL.
*/
prefix :='GLOBAL.' || the_stackname;
/*
** इस नामित स्टैक का पॉइंटर
** GLOBAL में रहता है।_PTR याद रखें कि यह पॉइंटर का *name*
** है।
*/
ptr_name :=उपसर्ग || '_PTR';
/*
** NULL के डिफ़ॉल्ट मान को फ़ोर्स करें ताकि हम जांच कर सकें कि क्या
** पॉइंटर मौजूद है (वैश्विक चर के रूप में)। अगर यह मौजूद नहीं है
**, तो हम NULL के लिए एक पल में परीक्षण कर सकते हैं, और
** गैर-मौजूद
** वैश्विक चर को संदर्भित करने के कारण विशिष्ट त्रुटि से बच सकते हैं।
*/
Default_Value( NULL, ptr_name );
/*
** यदि पॉइंटर में निहित *value* NULL है, तो
** पॉइंटर नहीं होना चाहिए ऊपर
** Default_Value स्टेटमेंट से पहले मौजूद रहे हैं। इस मामले में स्थिरांक
** NO_SUCH_STACK लौटाएं और वैश्विक
** वैरिएबल को मिटा दें जिसे Default_Value परोक्ष रूप से बनाया गया है।
*/
IF Name_In(ptr_name ) IS NULL THEN
the_val :=NO_SUCH_STACK;
मिटाएं(ptr_name);
/*
** अन्यथा, नामित स्टैक पहले से मौजूद है। इस स्टैक के
** सूचक से
** सबसे बड़े स्टैक तत्व का सूचकांक प्राप्त करें।
*/
ELSE
cur_idx :=Name_In(ptr_name );
/*
** यदि सूचकांक शून्य है, तो नामित स्टैक पहले से ही
** खाली है, इसलिए स्थिर EMPTY_STACK लौटाएं, और बाद के लिए स्टैक के पॉइंटर को छोड़ दें
** उपयोग करें, अर्थात
** इसे मिटाएं नहीं।
**
** ध्यान दें कि एक स्टैक केवल तभी खाली हो सकता है जब कुछ मान
** पुश किए गए हों और फिर बाद में सभी मान
** POP'ed। यदि इस नाम के
** स्टैक पर कभी भी कोई मान पुश नहीं किया गया था, तो कोई संबद्ध स्टैक पॉइंटर नहीं बनाया गया होता
**, और हम उस त्रुटि को
** NO_SUCH_STACK के साथ फ़्लैग करेंगे ऊपर का मामला।
*/
IF cur_idx ='0' तब
the_val :=EMPTY_STACK;
/*
** अगर इंडेक्स शून्य नहीं है, तो :
** (1) वैश्विक चर का नाम निर्धारित करें
** जिसमें POP'ed किया जाने वाला मान संग्रहीत किया जाता है,
** GLOBAL।
** (2) (cur_idx)-वें तत्व का मान प्राप्त करें
** वापसी
** (3) स्टैक पॉइंटर को घटाएं
** (4) मिटाएं वैश्विक चर जिसका उपयोग
** मूल्य भंडारण
*/
ELSE
elt_name:=उपसर्ग || के लिए किया गया था || cur_idx;
the_val:=Name_In(elt_name);
new_idx:=TO_CHAR(TO_NUMBER(Name_In(ptr_name)) -1);
प्रतिलिपि (new_idx, ptr_name);
मिटाएं ( elt_name );
END IF;
END IF;
RETURN the_val;
END;

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle संग्रहीत कार्यविधि:परिणाम सेट और आउट पैरामीटर दोनों लौटाएँ

  2. ORA-12505, TNS:श्रोता वर्तमान में कनेक्ट des . में दिए गए SID के बारे में नहीं जानता है

  3. क्या Oracle में एक से अधिक बार प्रक्रिया के निष्पादन से बचने का सबसे अच्छा तरीका है?

  4. Oracle डेटाबेस 12c बनाना - चरण दर चरण

  5. अमान्य पहचानकर्ता SQL