PL/SQL Package হল একটি প্রোগ্রাম ইউনিট যা একাধিক সম্পর্কিত procedure, function, variables, এবং types একত্রিত করে। এটি কোডের পুনঃব্যবহারযোগ্যতা এবং সংগঠন উন্নত করে এবং কমপ্লেক্স অ্যাপ্লিকেশনগুলিকে সহজে পরিচালিত করতে সহায়তা করে। একটি প্যাকেজের মধ্যে দুটি প্রধান অংশ থাকে:
- Package Specification (Specification)
- Package Body (Body)
১. Package Specification
Package Specification হল প্যাকেজের প্রকাশ্য অংশ যা প্যাকেজের কার্যকারিতা বা public interface এর বিবরণ দেয়। এতে প্যাকেজের সব ফাংশন, প্রোসিডিওর, কনস্ট্যান্ট এবং টাইপ ডিফিনিশন থাকে যেগুলি অন্য কোড বা ইউনিট থেকে অ্যাক্সেস করা যাবে।
২. Package Body
Package Body হল প্যাকেজের গোপন অংশ যেখানে প্যাকেজের কার্যকারিতা সংজ্ঞায়িত করা হয়। এটি Specification-এ ঘোষিত সকল ফাংশন ও প্রোসিডিওরকে বাস্তবায়ন করে এবং ডাটাবেসে প্রাসঙ্গিক কার্যক্রম পরিচালনা করে।
Package তৈরি: উদাহরণ
১. Package Specification (Specification)
CREATE OR REPLACE PACKAGE Employee_Package AS
-- Declaration of variables
v_employee_count NUMBER;
-- Declaration of procedure
PROCEDURE get_employee_count;
-- Declaration of function
FUNCTION get_employee_name (emp_id IN NUMBER) RETURN VARCHAR2;
END Employee_Package;
/
২. Package Body (Body)
CREATE OR REPLACE PACKAGE BODY Employee_Package AS
-- Implementing the procedure
PROCEDURE get_employee_count IS
BEGIN
SELECT COUNT(*) INTO v_employee_count FROM employees;
DBMS_OUTPUT.PUT_LINE('Total Employees: ' || v_employee_count);
END get_employee_count;
-- Implementing the function
FUNCTION get_employee_name (emp_id IN NUMBER) RETURN VARCHAR2 IS
v_name VARCHAR2(50);
BEGIN
SELECT employee_name INTO v_name FROM employees WHERE employee_id = emp_id;
RETURN v_name;
END get_employee_name;
END Employee_Package;
/
ব্যাখ্যা:
- Package Specification: এখানে প্যাকেজের বৈশিষ্ট্য ঘোষিত হয়েছে। এটি প্যাকেজের সকল পাবলিক ফাংশন, প্রোসিডিউর এবং ভেরিয়েবল ধারণ করে।
- v_employee_count একটি ভেরিয়েবল যা মোট কর্মচারী সংখ্যা ধারণ করবে।
- get_employee_count একটি প্রোসিডিউর যা কর্মচারীদের মোট সংখ্যা বের করবে এবং আউটপুট হিসেবে দেখাবে।
- get_employee_name একটি ফাংশন যা একটি নির্দিষ্ট কর্মচারীর নাম রিটার্ন করবে।
- Package Body: এখানে প্যাকেজের কার্যকারিতা বাস্তবায়িত হয়েছে।
- get_employee_count প্রোসিডিউরটি
employeesটেবিল থেকে কর্মচারীদের সংখ্যা গণনা করে এবং সেটি DBMS_OUTPUT.PUT_LINE এর মাধ্যমে আউটপুট হিসেবে দেখায়। - get_employee_name ফাংশনটি employee_id দিয়ে employees টেবিল থেকে নির্দিষ্ট কর্মচারীর নাম রিটার্ন করে।
- get_employee_count প্রোসিডিউরটি
Package ব্যবহার:
প্যাকেজটি ব্যবহার করতে হলে আপনি তার ফাংশন এবং প্রোসিডিউরগুলো কল করতে পারেন।
১. Procedure Call
BEGIN
Employee_Package.get_employee_count;
END;
২. Function Call
DECLARE
v_name VARCHAR2(50);
BEGIN
v_name := Employee_Package.get_employee_name(101); -- Employee ID 101 এর নাম পাবেন
DBMS_OUTPUT.PUT_LINE('Employee Name: ' || v_name);
END;
Package এর সুবিধা:
- কোডের পুনঃব্যবহারযোগ্যতা: একবার প্যাকেজ তৈরি করা হলে, তার ফাংশন ও প্রোসিডিউর অন্য স্থানে সহজে ব্যবহার করা যায়।
- সংগঠন: কোডের শ্রেণীবিভাগ ও সংগঠন উন্নত হয়, কারণ ফাংশন এবং প্রোসিডিউরগুলি সম্পর্কিত প্যাকেজে থাকে।
- পারফরম্যান্স উন্নতি: প্যাকেজের ভেরিয়েবলগুলি একবার মেমোরিতে লোড হলে সেগুলি পুনঃব্যবহার করা যায়, যা পারফরম্যান্স উন্নত করে।
- আন্তঃপ্যাকেজ যোগাযোগ: প্যাকেজের মধ্যে ভেরিয়েবল এবং ফাংশনগুলো সহজে অ্যাক্সেস করা যায়, যার ফলে কোডের মধ্যে আন্তঃযোগাযোগ সহজ হয়।
PL/SQL Package উদাহরণের সারাংশ:
- Package Specification: প্যাকেজের পাবলিক ইন্টারফেস ঘোষিত হয়।
- Package Body: কার্যকরী ফাংশন এবং প্রোসিডিউরগুলির বাস্তবায়ন।
- Package ব্যবহার: অন্য PL/SQL ব্লক থেকে প্যাকেজের ফাংশন এবং প্রোসিডিউরগুলো কল করা যায়।
এই প্যাকেজ ব্যবস্থাপনা কোডিংকে আরো দক্ষ, সংগঠিত এবং পুনঃব্যবহারযোগ্য করে তোলে, যা বড় সিস্টেম ডেভেলপমেন্টে বিশেষভাবে গুরুত্বপূর্ণ।
Read more