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

Oracle PLSQL टेबल्स (एसोसिएटिव एरे या इंडेक्स-बाय टेबल) का उपयोग कैसे करें

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(mn ) m . श्रेणी के सभी तत्वों को हटा देता है .. n . अगर मी n . से बड़ा है या अगर मी या n शून्य है, DELETE(mn ) कुछ नहीं करता

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 ट्यूटोरियल


  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.DataAccess.Client निर्भरताएँ:

  2. Oracle PL/SQL:जांचें कि क्या BLOB या CLOB खाली है

  3. Oracle:CSV फ़ाइल आयात करें

  4. सभी उपयोगी 11g गतिशील प्रदर्शन दृश्य

  5. oracle systimestamp (sysdate) से मिलीसेकंड