PostgreSQL এবং অন্যান্য ডেটাবেস সিস্টেমে Functions এবং Procedures দুটি গুরুত্বপূর্ণ কনসেপ্ট যা ডেটাবেসের লজিকাল অপারেশন এবং অ্যাপ্লিকেশন লজিক তৈরি করতে ব্যবহৃত হয়। যদিও তাদের মধ্যে কিছু মিল রয়েছে, তবুও তাদের মধ্যে কিছু মৌলিক পার্থক্য রয়েছে। এখানে আমরা তাদের মধ্যে পার্থক্যটি বিস্তারিতভাবে আলোচনা করব।
1. Definition (সংজ্ঞা)
- Function: একটি function হল একটি প্রোগ্রাম বা স্ক্রিপ্ট যা কোনো ইনপুট নিয়ে নির্দিষ্ট লজিক বা গণনা সম্পাদন করে এবং একটি মান (value) রিটার্ন করে। ফাংশন সাধারণত কিছু ইনপুট প্যারামিটার গ্রহণ করে এবং একটি আউটপুট প্রদান করে।
- Procedure: একটি procedure হল একটি প্রোগ্রাম বা স্ক্রিপ্ট যা সাধারণত কোনো ইনপুট গ্রহণ করে এবং একটি নির্দিষ্ট কাজ সম্পাদন করে, তবে এটি কোনো মান রিটার্ন করে না। প্রোসিডিউর কোনো আউটপুট মান রিটার্ন না করে শুধুমাত্র ডেটাবেসে এক বা একাধিক অপারেশন (যেমন, ডেটা আপডেট বা টেবিল ম্যানিপুলেশন) সম্পাদন করে।
2. Return Value (রিটার্ন ভ্যালু)
Function:
- একটি ফাংশন অবশ্যই একটি value রিটার্ন করে।
- এটি যেকোনো ধরনের ডেটা টাইপ রিটার্ন করতে পারে, যেমন, integer, text, boolean, custom types ইত্যাদি।
উদাহরণ:
CREATE FUNCTION add_numbers(a INT, b INT) RETURNS INT AS LANGUAGE plpgsql;Procedure:
- একটি প্রোসিডিউর কোন return value প্রদান করে না। এটি শুধুমাত্র কিছু কাজ বা অপারেশন সম্পাদন করে।
উদাহরণ:
CREATE PROCEDURE update_employee_salary(employee_id INT, new_salary DECIMAL) LANGUAGE plpgsql AS ;
3. Usage Context (ব্যবহারের প্রসঙ্গ)
- Function:
- ফাংশনকে সাধারণত SQL কুয়েরি বা এক্সপ্রেশনে ব্যবহার করা হয়, যেমন
SELECTকুয়েরিতে। এটি টেবিলের রেকর্ডগুলির সাথে কাজ করতে পারে এবং আউটপুট প্রদান করে যা পরে ব্যবহার করা যায়। - ফাংশন সাধারণত অ্যাগ্রিগেট অপারেশন (যেমন গাণিতিক হিসাব, স্ট্রিং ম্যানিপুলেশন) বা জটিল লজিক সম্পাদন করতে ব্যবহৃত হয়।
- ফাংশনকে সাধারণত SQL কুয়েরি বা এক্সপ্রেশনে ব্যবহার করা হয়, যেমন
- Procedure:
- প্রোসিডিউর সাধারণত ব্যাচ প্রোগ্রামিং বা ব্যবসায়িক লজিক (business logic) ক্ষেত্রে ব্যবহৃত হয়। এটি একাধিক SQL স্টেটমেন্ট পরিচালনা করতে পারে, যেমন, টেবিল আপডেট, ডিলিট, ইনসার্ট অপারেশন।
- প্রোসিডিউরকে ডেটাবেসের সাইড-ইফেক্টগুলির জন্য ব্যবহার করা হয়, যেমন ডেটা ম্যানিপুলেশন, লগিং, ট্রানজেকশন পরিচালনা ইত্যাদি।
4. Calling Method (কলিং পদ্ধতি)
Function:
- ফাংশনকে SELECT স্টেটমেন্ট বা অন্যান্য SQL কুয়েরি দ্বারা কল করা হয়। এটি সরাসরি SQL কুয়েরির অংশ হিসেবে ব্যবহার করা যেতে পারে।
উদাহরণ:
SELECT add_numbers(3, 4);Procedure:
- প্রোসিডিউরকে CALL স্টেটমেন্ট দ্বারা কল করা হয়, এবং এটি কোনও মান রিটার্ন করে না। এটি ডেটাবেসের নির্দিষ্ট কাজ সম্পাদন করার জন্য ব্যবহৃত হয়।
উদাহরণ:
CALL update_employee_salary(101, 50000);
5. Transaction Control (ট্রানজেকশন কন্ট্রোল)
- Function:
- ফাংশন ট্রানজেকশন দ্বারা প্রভাবিত হতে পারে, কিন্তু ফাংশনটি ভিতরে ট্রানজেকশন ব্যবস্থাপনা করতে পারে না। এক্সিকিউশন শেষে ফাংশনটি যেটি রিটার্ন করে সেটি ব্যবহার করা যায়।
- Procedure:
- প্রোসিডিউর সাধারণত ট্রানজেকশন কন্ট্রোল (যেমন
COMMIT,ROLLBACK) সম্পাদন করতে সক্ষম হয়, কারণ এটি দীর্ঘস্থায়ী কাজের জন্য ব্যবহৃত হয় এবং একাধিক SQL স্টেটমেন্ট একত্রে সম্পাদন করতে পারে।
- প্রোসিডিউর সাধারণত ট্রানজেকশন কন্ট্রোল (যেমন
6. Parameters (প্যারামিটার)
Function:
- ফাংশনে input parameters ব্যবহার করা হয়, তবে কিছু ফাংশন আউটপুট দিতে পারে, যেমন
OUTparameters।
উদাহরণ:
CREATE FUNCTION multiply(a INT, b INT) RETURNS INT AS LANGUAGE plpgsql;- ফাংশনে input parameters ব্যবহার করা হয়, তবে কিছু ফাংশন আউটপুট দিতে পারে, যেমন
Procedure:
- প্রোসিডিউরে input, output, এবং inout প্যারামিটার ব্যবহার করা যায়।
উদাহরণ:
CREATE PROCEDURE process_order(order_id INT, OUT total DECIMAL) LANGUAGE plpgsql AS ;
সারাংশ
| বিষয় | Function | Procedure |
|---|---|---|
| Return Value | একটি মান রিটার্ন করে | কোনও মান রিটার্ন করে না |
| Usage | সাধারণত SQL কুয়েরিতে ব্যবহার হয় | মূলত ব্যাচ অপারেশন এবং ডেটাবেস ম্যানিপুলেশন |
| Calling Method | SELECT কুয়েরি দ্বারা কল করা হয় | CALL স্টেটমেন্ট দ্বারা কল করা হয় |
| Transaction Control | ফাংশন ট্রানজেকশন কন্ট্রোল করতে পারে না | প্রোসিডিউর ট্রানজেকশন কন্ট্রোল করতে পারে |
| Parameters | ইনপুট প্যারামিটার, আউটপুট প্যারামিটার ব্যবহার হয় | ইনপুট, আউটপুট, ইনআউট প্যারামিটার ব্যবহার হয় |
সারাংশ
- Function: এক্সপ্রেশন বা কুয়েরির অংশ হিসেবে ব্যবহৃত হয় এবং একটি মান রিটার্ন করে।
- Procedure: নির্দিষ্ট কাজ বা অ্যাকশন সম্পাদন করতে ব্যবহৃত হয় এবং কোনো মান রিটার্ন করে না। এটি সাধারণত ডেটাবেসের মধ্যে টেবিলের ডেটা পরিবর্তন করতে ব্যবহৃত হয়।
ফাংশন এবং প্রোসিডিউর উভয়ই PostgreSQL-এর মধ্যে গুরুত্বপূর্ণ উপাদান এবং ডেটাবেস লজিক তৈরি করতে সহায়ক।
Content added By
Read more