PL/SQL Package একটি একক ইউনিট হিসেবে সম্পর্কিত ফাংশন, প্রোসিডিউর, ভেরিয়েবল, কনস্ট্যান্ট, কাস্টম ডেটা টাইপ, কিউরিস এবং এক্সেপশন ধারণ করে। এটি প্রোগ্রামিং কোডকে সংগঠিত করার এবং পুনঃব্যবহারযোগ্য তৈরি করার একটি শক্তিশালী উপায়। একটি Package দুটি প্রধান অংশে বিভক্ত:
- Package Specification (Specification): এটি পাবলিক অংশ, যেখানে সমস্ত প্রাসঙ্গিক ফাংশন, প্রোসিডিউর, কনস্ট্যান্ট, টাইপ এবং ভেরিয়েবল ঘোষিত হয় এবং অ্যাক্সেস করা যায়।
- Package Body (Body): এটি প্রাইভেট অংশ, যেখানে ফাংশন এবং প্রোসিডিউরের বাস্তবায়ন (implementation) থাকে।
১. Functions
Functions হল এমন প্রোগ্রাম কোড, যা নির্দিষ্ট কিছু ইনপুট নিয়ে কাজ করে এবং একটি মান রিটার্ন করে। ফাংশন সাধারণত কোনও ক্যালকুলেশন বা অপারেশন করতে ব্যবহৃত হয়।
- Package Specification-এ ফাংশনটির ঘোষণা করা হয়।
- Package Body-এ ফাংশনটির বাস্তবায়ন হয়।
Syntax:
-- Package Specification (Declaration)
FUNCTION function_name (param1 datatype, param2 datatype) RETURN return_type;
-- Package Body (Implementation)
FUNCTION function_name (param1 datatype, param2 datatype) RETURN return_type IS
BEGIN
-- Function Logic
RETURN result;
END function_name;
উদাহরণ:
-- Package Specification
CREATE OR REPLACE PACKAGE employee_pkg AS
FUNCTION calculate_bonus(salary NUMBER) RETURN NUMBER;
END employee_pkg;
-- Package Body
CREATE OR REPLACE PACKAGE BODY employee_pkg AS
FUNCTION calculate_bonus(salary NUMBER) RETURN NUMBER IS
BEGIN
RETURN salary * 0.1; -- 10% bonus
END calculate_bonus;
END employee_pkg;
২. Procedures
Procedures হল কোড ব্লক, যা একটি বা একাধিক স্টেটমেন্ট নিয়ে গঠিত এবং এটি কোনও মান রিটার্ন করে না। প্রোসিডিউর সাধারণত কোনো কাজ সম্পাদন বা প্রক্রিয়া চালাতে ব্যবহৃত হয়।
- Package Specification-এ প্রোসিডিউরের ঘোষণা করা হয়।
- Package Body-এ প্রোসিডিউরের বাস্তবায়ন হয়।
Syntax:
-- Package Specification (Declaration)
PROCEDURE procedure_name (param1 datatype, param2 datatype);
-- Package Body (Implementation)
PROCEDURE procedure_name (param1 datatype, param2 datatype) IS
BEGIN
-- Procedure Logic
END procedure_name;
উদাহরণ:
-- Package Specification
CREATE OR REPLACE PACKAGE employee_pkg AS
PROCEDURE give_raise(employee_id NUMBER, raise_amount NUMBER);
END employee_pkg;
-- Package Body
CREATE OR REPLACE PACKAGE BODY employee_pkg AS
PROCEDURE give_raise(employee_id NUMBER, raise_amount NUMBER) IS
BEGIN
UPDATE employees
SET salary = salary + raise_amount
WHERE emp_id = employee_id;
COMMIT;
END give_raise;
END employee_pkg;
৩. Variables
Variables হল এমন ডেটা ধারণকারী উপাদান যা প্রোগ্রামের চলাকালীন সময়ে মান ধারণ করতে ব্যবহৃত হয়। প্যাকেজে ভেরিয়েবল ডিক্লেয়ার করা হলে, তা প্যাকেজের সব ফাংশন এবং প্রোসিডিউরের মধ্যে শেয়ার করা যায় (যদি তা প্যাকেজ স্পেসিফিকেশন থেকে অ্যাক্সেসযোগ্য হয়)।
- Package Specification-এ ভেরিয়েবল ডিক্লেয়ার করা হলে এটি পাবলিক হয়ে ওঠে।
- Package Body-এ ভেরিয়েবল প্রাইভেটভাবে ব্যবহৃত হতে পারে।
Syntax:
-- Package Specification (Declaration)
variable_name datatype;
-- Package Body (Implementation)
variable_name datatype := initial_value;
উদাহরণ:
-- Package Specification
CREATE OR REPLACE PACKAGE employee_pkg AS
v_employee_count NUMBER;
END employee_pkg;
-- Package Body
CREATE OR REPLACE PACKAGE BODY employee_pkg AS
v_employee_count NUMBER := 0; -- Initialize variable
PROCEDURE increase_employee_count IS
BEGIN
v_employee_count := v_employee_count + 1;
END increase_employee_count;
END employee_pkg;
Package Components Summary
- Functions: কোড ব্লক যা একটি ইনপুট নিয়ে একটি মান রিটার্ন করে। সাধারণত ক্যালকুলেশন বা ডেটা প্রসেসিংয়ের জন্য ব্যবহৃত হয়।
- Procedures: কোড ব্লক যা কিছু কার্য সম্পাদন করে কিন্তু কোন মান রিটার্ন করে না। এটি প্রক্রিয়া চালানোর জন্য ব্যবহৃত হয়।
- Variables: ডেটা ধারণ করার জন্য ব্যবহৃত উপাদান, যা প্যাকেজে ঘোষিত হলে অন্যান্য ফাংশন এবং প্রোসিডিউরগুলির মধ্যে শেয়ার করা যায়।
এই উপাদানগুলি প্যাকেজের কাঠামো গঠনে ব্যবহৃত হয় এবং বিভিন্ন ধরনের ফাংশন, প্রোসিডিউর, ভেরিয়েবল এবং অন্যান্য ডেটা টাইপ দিয়ে কোডের পুনঃব্যবহারযোগ্যতা এবং কাঠামোগত সংগঠন নিশ্চিত করে।
Read more