Oracle PLSQL टेबल्स
- PLSQL तालिकाएं समग्र डेटा प्रकार हैं।
- ये सरणियों की तरह ही व्यवहार करते हैं, सिवाय इसके कि इनकी कोई ऊपरी सीमा नहीं होती है, जिससे वे लगातार विस्तार कर सकते हैं।
- इन्हें तालिका द्वारा अनुक्रमणिका भी कहा जाता है
- PLSQL तालिका में दो तत्व होते हैं
(1) BINARY_INTEGER डेटाटाइप की एक प्राथमिक कुंजी जो तालिका को अनुक्रमित करती है, जिसे लगातार होने की आवश्यकता नहीं है। एक इंडेक्स मान का उपयोग करके किसी तत्व को मान निर्दिष्ट करके संग्रह बढ़ाया जाता है जो वर्तमान में मौजूद नहीं है।
हम एक स्ट्रिंग मान द्वारा भी अनुक्रमित करने में सक्षम हैं
(2) स्केलर या रिकॉर्ड डेटाटाइप का एक कॉलम जो इंडेक्स को टेबल एलिमेंट्स द्वारा स्टोर करता है
टेबल प्रकार को कैसे परिभाषित और घोषित करें
पीएल/एसक्यूएल टेबल बनाने के लिए, आप दो कदम उठाते हैं। सबसे पहले, आप एक टेबल प्रकार को परिभाषित करते हैं, फिर उस प्रकार की पीएल/एसक्यूएल टेबल घोषित करते हैं। आप सिंटैक्स का उपयोग करके किसी भी ब्लॉक, सबप्रोग्राम या पैकेज के घोषणात्मक भाग में TABLE प्रकारों को परिभाषित कर सकते हैं
Syntax TYPE table_type_name IS TABLE OF datatype [NOT NULL] INDEX BY BINARY_INTEGER;
यदि तत्व प्रकार एक रिकॉर्ड प्रकार है, तो रिकॉर्ड में प्रत्येक फ़ील्ड में एक अदिश डेटा प्रकार होना चाहिए जैसे कि CHAR, DATE, या NUMBER।
तत्व प्रकार निर्दिष्ट करने के लिए, आप चर या डेटाबेस कॉलम का डेटा प्रकार प्रदान करने के लिए %TYPE का उपयोग कर सकते हैं
DECLARE TYPE DEPTTabTyp IS TABLE OF dept.dept_name%TYPE INDEX BY BINARY_INTEGER;
आप तालिका प्रकार की परिभाषा में NOT NULL बाधा जोड़ सकते हैं और इसलिए उस प्रकार की PL/SQL तालिकाओं में नल के भंडारण को रोक सकते हैं:
DECLARE TYPE DEPTTabTyp IS TABLE OF dept.location%TYPE NOT NULL INDEX BY BINARY_INTEGER;
आप तत्व प्रकार निर्दिष्ट करने के लिए %ROWTYPE का भी उपयोग कर सकते हैं।
DECLARE TYPE deptTabTyp IS TABLE OF dept%ROWTYPE INDEX BY BINARY_INTEGER;
आप तत्व प्रकार निर्दिष्ट करने के लिए उपयोगकर्ता परिभाषित रिकॉर्ड प्रकार का उपयोग करते हैं:
DECLARE TYPE emp_phonetyp IS RECORD ( Stdcode PLS_INTEGER, phn_number PLS_INTEGER, extension PLS_INTEGER ); TYPE emp_contact IS TABLE OF emp_phonetyp INDEX BY BINARY_INTEGER;
एक टेबल प्रकार को परिभाषित करने के बाद, आप उस प्रकार की पीएल/एसक्यूएल टेबल घोषित कर सकते हैं
DECLARE TYPE SalTabTyp IS TABLE OF emp.sal%TYPE INDEX BY BINARY_INTEGER; TYPE EmpTabTyp IS TABLE OF emp%ROWTYPE INDEX BY BINARY_INTEGER; sal_tab SalTabTyp; -- declare PL/SQL table emp_tab EmpTabTyp; -- declare another PL/SQL table
PLSQL तालिका विशेषताएँ या विधि
PL/SQL तालिका में EXISTS, COUNT, FIRST, LAST, PRIOR, NEXT, और DELETE विशेषताएँ होती हैं।
वे PL/SQL तालिकाओं का उपयोग करना आसान बनाते हैं और आपके अनुप्रयोगों को बनाए रखना आसान बनाते हैं।
plsql_table_name.attribute_name |
विशेषताएँ मौजूद हैं, PRIOR, NEXT, और DELETE पैरामीटर लेती हैं। प्रत्येक पैरामीटर एक एक्सप्रेशन होना चाहिए जो एक BINARY_INTEGER मान या उस डेटाटाइप के लिए परोक्ष रूप से परिवर्तनीय मान उत्पन्न करता है।
DELETE एक प्रक्रिया की तरह काम करता है, जिसे स्टेटमेंट कहा जाता है। हालाँकि, अन्य PL/SQL तालिका विशेषताएँ एक फ़ंक्शन की तरह कार्य करती हैं, जिसे एक व्यंजक के भाग के रूप में कहा जाता है।
मौजूद(n) | यदि तालिका में nवां तत्व मौजूद है तो सही लौटें |
गिनती | तालिका में तत्वों की संख्या लौटाएं |
पहली और आखिरी | FIRST और LAST किसी PL/SQL तालिका में पहली और अंतिम (सबसे छोटी और सबसे बड़ी) अनुक्रमणिका संख्याएँ लौटाते हैं |
PRIOR(n ) | इंडेक्स से पहले की इंडेक्स संख्या देता है n PL/SQL तालिका में |
अगला(n ) | इंडेक्स के बाद आने वाला इंडेक्स नंबर देता है n |
हटाएं | DELETE PL/SQL तालिका से सभी तत्वों को हटा देता है। DELETE(n ) n . को हटा देता है वें तत्व। अगर n शून्य है, DELETE(n ) कुछ भी नहीं करता है। DELETE(m , n ) m . श्रेणी के सभी तत्वों को हटा देता है .. n . अगर मी n . से बड़ा है या अगर मी या n शून्य है, DELETE(m , n ) कुछ नहीं करता |
PL/SQL तालिकाएँ थोक डेटा को डेटाबेस तालिकाओं में या क्लाइंट-साइड अनुप्रयोगों और संग्रहीत उपप्रोग्रामों के बीच में और बाहर ले जाने के लिए।
पीएलएसक्यूएल तालिका में डेटा को कैसे पॉप्युलेट करें
साधारण डेटाटाइप वाली तालिकाएं इस प्रकार भरी जा सकती हैं:
<variable>(<integer>) := <value>;
जटिल डेटाटाइप वाली तालिकाओं के लिए अलग-अलग कॉलमों की आवश्यकता होगी:
<variable>(<integer>).<column_name> := <value>;
या कर्सर से:
fetch <cursor_name> into <variable>(<integer>);
Type emptabletype is table of varchar2(10)
Index by binary_integer;
emp_table emptabletyp;
emp_table (1) := ‘good’;
emp_table (2) := ‘bad’’;
आप अन्य तीन तरीकों से भी Oracle डेटा को PL/SQL तालिका में पुनः प्राप्त कर सकते हैं
a) सेलेक्ट INTO स्टेटमेंट से आप डेटा की एक पंक्ति का चयन कर सकते हैं
SELECT INTO स्टेटमेंट का उपयोग करके, आप एक स्केलर एलिमेंट में एक कॉलम एंट्री का चयन कर सकते हैं। या, आप एक रिकॉर्ड तत्व में एक पूरी पंक्ति का चयन कर सकते हैं। निम्नलिखित उदाहरण में, आप डेटाबेस तालिका विभाग से PL/SQL तालिका dept_tab के पहले तत्व द्वारा संग्रहीत रिकॉर्ड में एक पंक्ति का चयन करते हैं:
DECLARE
TYPE DeptTabTyp IS TABLE OF dept%ROWTYPE
INDEX BY BINARY_INTEGER;
dept_tab DeptTabTyp;
BEGIN
/* Select entire row into record stored by first element. */
SELECT * INTO dept_tab(1) FROM dept WHERE deptno = 10;
IF dept_tab(1).dname = 'ACCOUNTING' THEN ...
...
END;
b) FETCH स्टेटमेंट
FETCH स्टेटमेंट के साथ, आप Oracle डेटा के पूरे कॉलम को स्केलर्स की PL/SQL टेबल में ला सकते हैं।
या आप Oracle डेटा की एक पूरी तालिका को PL/SQL रिकॉर्ड की तालिका में ला सकते हैं।
DECLARE
TYPE EmpTabTyp IS TABLE OF emp%ROWTYPE
INDEX BY BINARY_INTEGER;
emp_tab EmpTabTyp;
i BINARY_INTEGER := 0;
CURSOR c1 IS SELECT * FROM emp;
BEGIN
OPEN c1;
LOOP
i := i + 1;
/* Fetch entire row into record stored by ith element. */
FETCH c1 INTO emp_tab(i);
EXIT WHEN c1%NOTFOUND;
-- process data record
END LOOP;
CLOSE c1;
END;
c) लूप के लिए कर्सर आपको कई पंक्तियाँ लाने देता है।
DECLARE
TYPE EnameTabTyp IS TABLE OF emp.ename%TYPE
INDEX BY BINARY_INTEGER;
TYPE SalTabTyp IS TABLE OF emp.sal%TYPE
INDEX BY BINARY_INTEGER;
ename_tab EnameTabTyp;
sal_tab SalTabTyp;
n BINARY_INTEGER := 0;
BEGIN
/* Fetch entire columns into PL/SQL tables. */
FOR emp_rec IN (SELECT ename, sal FROM emp) LOOP
n := n + 1;
ename_tab(n) := emp_rec.ename;
sal_tab(n) := emp_rec.sal;
END LOOP;
...
END;
आपको ये अन्य PLSQL पोस्ट पढ़नी चाहिए
Oracle PLSQL ब्लॉक संरचना और प्रकार
Oracle PLSQL रिकॉर्ड
Oracle plsql साक्षात्कार प्रश्न
त्वरित Oracle sql और plsql ट्यूटोरियल