PL/SQL-এ Reference Data Types এবং Large Object (LOB) Data Types হল দুটি গুরুত্বপূর্ণ ডেটা টাইপ যা আপনাকে বিশেষ ধরনের ডেটা স্টোর এবং প্রসেস করতে সক্ষম করে। এদের ব্যবহারের মাধ্যমে আপনি বড় পরিসরের ডেটা এবং রেফারেন্স পয়েন্টারের মতো ধারণাগুলিকে দক্ষতার সাথে পরিচালনা করতে পারেন।
১. Reference Data Types (রেফারেন্স ডেটা টাইপ)
Reference Data Types হল এমন ডেটা টাইপ যা অন্য কোনো ডেটা টাইপ বা অবজেক্টের রেফারেন্স ধারণ করে। এর প্রধান উদাহরণ হল REF CURSOR, যা SQL কিউরি থেকে রেকর্ড রেফারেন্স করতে ব্যবহৃত হয়।
REF CURSOR
REF CURSOR একটি পয়েন্টার যা ডাইনামিকভাবে SQL কিউরি থেকে রেকর্ডগুলি রেফারেন্স করতে সক্ষম। এটি খুবই শক্তিশালী একটি কনসেপ্ট, কারণ এটি ব্যবহার করে আপনি একাধিক SQL কিউরি চালাতে এবং ডেটা কাস্টমাইজডভাবে প্রক্রিয়া করতে পারেন।
সিনট্যাক্স:
TYPE cursor_type IS REF CURSOR;
এটি সাধারণত Implicit Cursor বা Explicit Cursor হিসেবে ব্যবহৃত হতে পারে, তবে REF CURSOR-এর প্রধান সুবিধা হল এটি সার্ভার সাইডে ডাইনামিক কিউরি প্রক্রিয়া চালাতে সাহায্য করে।
REF CURSOR ব্যবহার উদাহরণ:
DECLARE
TYPE cursor_type IS REF CURSOR; -- Declare REF CURSOR type
v_cursor cursor_type; -- Declare a cursor variable
v_employee_name VARCHAR2(50); -- Variable to store employee name
BEGIN
-- Open the cursor for a dynamic SQL query
OPEN v_cursor FOR
SELECT employee_name
FROM employees
WHERE department_id = 10;
-- Fetch and display the employee names from the cursor
LOOP
FETCH v_cursor INTO v_employee_name;
EXIT WHEN v_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(v_employee_name);
END LOOP;
-- Close the cursor
CLOSE v_cursor;
END;
এখানে REF CURSOR ব্যবহার করা হয়েছে, যেখানে v_cursor একটি পয়েন্টার যা একটি কিউরি থেকে রেকর্ড ধারণ করে। এরপর ডেটা ফেচ করা হয়েছে এবং পরবর্তীতে কনসোলে আউটপুট দেওয়া হয়েছে।
২. Large Object (LOB) Data Types (লार্জ অবজেক্ট ডেটা টাইপ)
Large Object (LOB) ডেটা টাইপগুলি প্রধানত বড় আকারের ডেটা সংরক্ষণের জন্য ব্যবহৃত হয়, যেমন ইমেজ, অডিও, ভিডিও, বা বড় টেক্সট ফাইল। LOB টাইপগুলি আপনাকে ব্লব (Binary Large Object), ক্লব (Character Large Object), এবং আউটপুট স্ট্রিমের মতো ডেটা সংরক্ষণ করতে সক্ষম করে। PL/SQL-এ LOB ডেটা টাইপের মধ্যে কিছু মূল টাইপ রয়েছে:
প্রধান LOB ডেটা টাইপগুলি:
BLOB (Binary Large Object)
BLOB ডেটা টাইপটি বাইনারি ডেটা সংরক্ষণ করতে ব্যবহৃত হয়, যেমন ছবি, অডিও ফাইল, ভিডিও, অথবা অন্যান্য বড় আকারের বাইনারি ডেটা।সিনট্যাক্স:
v_blob BLOB;CLOB (Character Large Object)
CLOB ডেটা টাইপটি বড় আকারের টেক্সট ডেটা সংরক্ষণ করতে ব্যবহৃত হয়। এটি সাধারণত বড় টেক্সট ডকুমেন্ট বা XML ফাইল সংরক্ষণের জন্য ব্যবহৃত হয়।সিনট্যাক্স:
v_clob CLOB;NCLOB (National Character Large Object)
NCLOB ডেটা টাইপটি বৈশ্বিক ভাষায় টেক্সট ডেটা সংরক্ষণ করতে ব্যবহৃত হয়, যেমন Unicode কনটেন্ট।সিনট্যাক্স:
v_nclob NCLOB;BFILE (Binary File)
BFILE ডেটা টাইপটি বাইনারি ফাইল সিস্টেমের ফাইল পাথগুলি সংরক্ষণ করতে ব্যবহৃত হয়। এটি সরাসরি ডেটাবেসে সংরক্ষণ না করে বাইনারি ফাইলের লিঙ্ক সংরক্ষণ করে।সিনট্যাক্স:
v_bfile BFILE;
LOB ডেটা টাইপ ব্যবহারের উদাহরণ:
DECLARE
v_blob BLOB; -- Declare a BLOB variable for binary data
v_clob CLOB; -- Declare a CLOB variable for character data
BEGIN
-- Initialize the BLOB and CLOB variables
DBMS_LOB.CREATETEMPORARY(v_blob, TRUE); -- Create temporary BLOB
DBMS_LOB.CREATETEMPORARY(v_clob, TRUE); -- Create temporary CLOB
-- Write binary data to BLOB (example for image or file)
DBMS_LOB.WRITE(v_blob, LENGTH('sample_binary_data'), 1, 'sample_binary_data');
-- Write text data to CLOB (example for long text)
DBMS_LOB.WRITE(v_clob, LENGTH('sample_long_text'), 1, 'sample_long_text');
-- Optionally, you can also read LOB data using DBMS_LOB.READ
DBMS_OUTPUT.PUT_LINE('BLOB Data: ' || DBMS_LOB.SUBSTR(v_blob, 10, 1));
DBMS_OUTPUT.PUT_LINE('CLOB Data: ' || DBMS_LOB.SUBSTR(v_clob, 10, 1));
END;
এখানে, BLOB এবং CLOB ভেরিয়েবল তৈরি করা হয়েছে এবং সেগুলিতে বাইনারি এবং টেক্সট ডেটা সংরক্ষণের জন্য DBMS_LOB প্যাকেজ ব্যবহার করা হয়েছে। LOB ডেটা টাইপের জন্য DBMS_LOB.CREATETEMPORARY ফাংশনটি ব্যবহার করে অস্থায়ী LOB তৈরি করা হয়।
LOB ডেটা টাইপের প্রধান বৈশিষ্ট্য:
- বড় আকারের ডেটা সংরক্ষণ: LOB ডেটা টাইপগুলি বড় আকারের ডেটা (যেমন ইমেজ, ভিডিও, অডিও, টেক্সট ফাইল) সংরক্ষণ করতে সহায়ক।
- প্রসেসিং: LOB ডেটা টাইপগুলির জন্য Oracle বিভিন্ন ফাংশন এবং প্যাকেজ সরবরাহ করে যেমন
DBMS_LOB, যার মাধ্যমে আপনি LOB ডেটা তৈরি, পড়া, এবং লিখতে পারেন। - ডেটা সংগ্রহ: LOB ডেটা টাইপগুলি ডেটাবেসে সংরক্ষিত হলেও সেগুলিকে প্রক্রিয়া এবং ম্যানিপুলেট করতে SQL ব্যবহার করা যেতে পারে।
সারাংশ:
- Reference Data Types: এই টাইপগুলো ডেটার রেফারেন্স বা পয়েন্টার হিসাবে কাজ করে।
REF CURSORহল এর একটি উদাহরণ, যা ডাইনামিক SQL কিউরি থেকে ডেটা রেফারেন্স করতে ব্যবহৃত হয়। - Large Object (LOB) Data Types: LOB ডেটা টাইপগুলি বড় আকারের ডেটা (যেমন বাইনারি বা টেক্সট ডেটা) সংরক্ষণ করতে ব্যবহৃত হয়, এবং এগুলির মধ্যে
BLOB,CLOB,NCLOB, এবংBFILEঅন্তর্ভুক্ত থাকে।
এই ডেটা টাইপগুলি PL/SQL-এ বিশেষভাবে ব্যবহার করা হয় যখন আপনার প্রোগ্রামে বড় আকারের ডেটা এবং ডাইনামিক রেফারেন্স প্রক্রিয়াগুলির প্রয়োজন হয়।
Read more