PL/SQL-এ Nested Tables এবং VARRAYS (Variable-Size Arrays) হল দুইটি ধরনের collections (সমষ্টি), যা একাধিক মান (values) ধারণ করতে পারে। এগুলি ব্যবহার করে আপনি একাধিক ডেটা আইটেম সংরক্ষণ করতে পারেন এবং প্রোগ্রামিংয়ের মধ্যে বিভিন্ন ডেটা কাঠামো হিসেবে ব্যবহার করতে পারেন।
এখন আমরা বিস্তারিতভাবে Nested Tables এবং VARRAYS সম্পর্কে জানব।
১. Nested Tables (নেস্টেড টেবিল)
Nested Tables হল PL/SQL এর একটি collection ধরনের যা একাধিক মান ধারণ করতে পারে। এটি একটি ডায়নামিক সাইজ এর collection, এবং এটি একটি টেবিলের মতোই কাজ করে। Nested Table এর আকার পরিবর্তনযোগ্য এবং এটি তিনটি বৈশিষ্ট্য দ্বারা পরিচিত:
- ডায়নামিক সাইজ: Nested Tables এর সাইজ runtime এ পরিবর্তিত হতে পারে।
- টেবিল হিসাবে অ্যাক্সেস: Nested Table কে সাধারণ টেবিলের মতো ব্যবহার করা যায়।
- প্রতিকৃতি: Nested Tables সাধারণত ছোট ডেটা সেগমেন্ট (বা sub-table) ধারণ করতে ব্যবহৃত হয়।
Nested Table এর বৈশিষ্ট্য:
- এটি সরাসরি টেবিলের মতো একাধিক আইটেম ধারণ করতে সক্ষম।
- এটি একসাথে একাধিক মান (values) ধারণ করতে পারে, যা সময়ে সময়ে বৃদ্ধি বা হ্রাস পেতে পারে।
- সাধারণত টেবিলগুলির মধ্যে সম্পর্কের মতো ব্যবহৃত হয় (যেমন একটি বিভাগে অনেক কর্মচারী)।
Nested Table তৈরি এবং ব্যবহার:
DECLARE
-- Nested Table type declaration
TYPE EmployeeTableType IS TABLE OF VARCHAR2(100);
-- Nested Table variable
employee_names EmployeeTableType := EmployeeTableType('John', 'Jane', 'Mary');
BEGIN
-- Adding new element to Nested Table
employee_names.EXTEND; -- Adds an empty slot at the end of the collection
employee_names(employee_names.COUNT) := 'Mark';
-- Displaying elements in Nested Table
FOR i IN 1 .. employee_names.COUNT LOOP
DBMS_OUTPUT.PUT_LINE('Employee Name: ' || employee_names(i));
END LOOP;
END;
এখানে:
- EmployeeTableType হল একটি Nested Table Type, যা
VARCHAR2ডেটা ধারণ করে। - EXTEND ব্যবহার করা হয়েছে নতুন মান যোগ করার জন্য।
- COUNT ব্যবহার করা হয়েছে টেবিলের বর্তমান সংখ্যা দেখানোর জন্য।
System Methods for Nested Tables:
EXTEND(n): Nested Table এnটি নতুন সেল যোগ করে।TRIM(n): Nested Table এর শেষ থেকেnটি সেল মুছে দেয়।COUNT: Nested Table এর মধ্যে বর্তমান আইটেমের সংখ্যা প্রদান করে।
২. VARRAYS (Variable-Size Arrays)
VARRAYS হল PL/SQL এর একটি collection ধরনের যা নির্দিষ্ট আকারের array ধারণ করতে পারে। এটি একটি সীমাবদ্ধ সাইজের collection, অর্থাৎ এটি একটি নির্দিষ্ট সাইজ সীমা সহ একটি এলিমেন্ট ধারণ করে।
VARRAYS এর বৈশিষ্ট্য:
- সীমাবদ্ধ সাইজ: VARRAYS একটি পূর্ব নির্ধারিত সীমার মধ্যে কাজ করে, অর্থাৎ এটি প্রাথমিকভাবে একটি নির্দিষ্ট আকার ধারণ করে এবং আপনি এটি runtime এ পরিবর্তন করতে পারবেন না।
- ফিক্সড আকার: যখন আপনি একটি VARRAYS তৈরি করেন, তখন তার আকার নির্ধারণ করতে হবে, এবং এটি নির্দিষ্ট সংখ্যক মান ধারণ করতে সক্ষম হবে।
- আরও ব্যবহারযোগ্য: সাধারণত যখন ডেটার পরিমাণ অল্প থাকে, এবং সাইজ পূর্বে নির্ধারিত থাকে, তখন VARRAYS ব্যবহার করা হয়।
VARRAYS তৈরি এবং ব্যবহার:
DECLARE
-- VARRAY type declaration
TYPE NumberArray IS VARRAY(5) OF NUMBER;
-- VARRAY variable initialization
num_array NumberArray := NumberArray(10, 20, 30, 40, 50);
BEGIN
-- Displaying VARRAY elements
FOR i IN 1 .. num_array.COUNT LOOP
DBMS_OUTPUT.PUT_LINE('Number: ' || num_array(i));
END LOOP;
END;
এখানে:
- NumberArray হল একটি VARRAY Type, যা
NUMBERডেটা ধারণ করে। - num_array হল VARRAYS এর একটি উদাহরণ, যার আকার ৫টি মান ধারণ করতে পারে।
System Methods for VARRAYS:
COUNT: VARRAYS এর মধ্যে উপস্থিত আইটেমের সংখ্যা প্রদান করে।EXTEND(n): VARRAYS এ নতুন আইটেম যোগ করা যায় (যদি এর সাইজ পরিবর্তনযোগ্য হয়)।
Nested Table এবং VARRAYS এর মধ্যে পার্থক্য
| বিষয় | Nested Table | VARRAYS |
|---|---|---|
| সাইজ | ডায়নামিক সাইজ (runtime এ বৃদ্ধি বা হ্রাস হতে পারে)। | ফিক্সড আকার (প্রাথমিকভাবে নির্ধারিত)। |
| পদ্ধতি | একাধিক আইটেম যোগ বা মুছে ফেলা যেতে পারে (যেমন EXTEND, TRIM)। | সাইজ পূর্ব নির্ধারিত, তবে কিছু সীমিত পরিবর্তন করা যায়। |
| ব্যবহার | বড় পরিমাণের বা সম্পর্কিত ডেটার জন্য ব্যবহৃত হয়। | ছোট এবং সীমাবদ্ধ ডেটার জন্য ব্যবহৃত হয়। |
| ল্যাঙ্গুয়েজ সাপোর্ট | সিস্টেম টেবিলের মতো পরিচালনা করা যায়। | কেবল একক আইটেমের সাথে কাজ করতে পারে। |
| ডেটা সংরক্ষণ | একটি টেবিলের মতো (এটি ডাটাবেসে সংরক্ষণ করা যায়)। | সাধারণত মেমোরিতে সীমাবদ্ধ থাকে। |
সারাংশ:
- Nested Tables হল একাধিক রেকর্ড ধারণ করতে সক্ষম ডায়নামিক collection। এটি সাইজ বৃদ্ধি বা হ্রাস করতে সক্ষম এবং সাধারণত বড় ডেটার জন্য ব্যবহৃত হয়।
- VARRAYS হল এক সীমাবদ্ধ আকারের collection, যা কিছু সংখ্যক আইটেম ধারণ করে এবং তা পূর্বেই নির্ধারিত থাকে।
যখন আপনার collection এর সাইজের উপর নিয়ন্ত্রণ থাকতে হবে এবং ফিক্সড আকারের প্রয়োজন হবে, তখন VARRAYS ব্যবহার করবেন। তবে যখন collection এর সাইজ ডায়নামিকভাবে বৃদ্ধি বা হ্রাস পেতে পারে এবং সম্পর্কিত ডেটা ধারণ করতে হবে, তখন Nested Tables উপযুক্ত হবে।
Read more