User Defined Functions (UDF) হল ডেটাবেসে তৈরি করা কাস্টম ফাংশন যা ব্যবহারকারী বা ডেভেলপার তাদের প্রয়োজন অনুযায়ী নির্দিষ্ট কাজ করার জন্য তৈরি করেন। HSQLDB-তে UDF তৈরি করা যায় যাতে কাস্টম লজিক বা গাণিতিক গণনা করা যায়, যা স্বাভাবিক SQL কুয়েরি বা ফাংশন দ্বারা করা সম্ভব নয়।
HSQLDB-তে UDF সাধারণত Java ব্যবহার করে তৈরি করা হয়, কারণ HSQLDB একটি জাভা ভিত্তিক ডেটাবেস। আমরা Java কোডের মাধ্যমে ফাংশন তৈরি করে সেটিকে ডেটাবেসে সংজ্ঞায়িত করতে পারি এবং SQL কুয়েরিতে ব্যবহার করতে পারি।
UDF তৈরি করার ধাপসমূহ
১. Java ক্লাস তৈরি করা
প্রথমে, আপনাকে একটি Java ক্লাস তৈরি করতে হবে যা UDF ফাংশন ধারণ করবে। উদাহরণস্বরূপ, যদি আপনি একটি সিম্পল গাণিতিক ফাংশন তৈরি করতে চান, যেমন দুটি সংখ্যার যোগফল, আপনি নিচের মতো একটি Java ক্লাস তৈরি করতে পারেন:
public class MyFunctions {
// ইউজার ডিফাইনড ফাংশন: দুটি সংখ্যার যোগফল
public static int addNumbers(int num1, int num2) {
return num1 + num2;
}
}
এই ক্লাসে addNumbers নামক একটি স্ট্যাটিক মেথড তৈরি করা হয়েছে যা দুটি পূর্ণসংখ্যার যোগফল প্রদান করবে।
২. UDF ফাংশন HSQLDB-তে রেজিস্টার করা
Java ক্লাসটি তৈরি করার পরে, আপনাকে এই ফাংশনটি HSQLDB-তে রেজিস্টার করতে হবে, যাতে এটি SQL কুয়েরিতে ব্যবহার করা যায়। এটি করতে হলে, আপনি HSQLDB-তে ফাংশন রেজিস্টার করার জন্য CREATE FUNCTION কীবোর্ড কমান্ড ব্যবহার করতে পারেন।
প্রথমে, আপনাকে JAR ফাইলটিকে ডেটাবেসের সাথে সংযুক্ত করতে হবে, যার মাধ্যমে আপনি UDF ফাংশনটি ব্যবহার করতে পারবেন।
ধরা যাক, আপনি MyFunctions.class ফাইলটি কম্পাইল করে myfunctions.jar নামে একটি JAR ফাইলে রূপান্তরিত করেছেন এবং সেটি ডেটাবেসে লোড করতে চান।
৩. JAR ফাইল লোড করা
CALL LOAD_JAVA_CLASS('myfunctions.jar');
এই কমান্ডটি JAR ফাইলটিকে ডেটাবেসে লোড করে এবং আপনাকে Java ক্লাসে সংজ্ঞায়িত ফাংশনগুলিকে ব্যবহার করার সুযোগ দেয়।
৪. UDF ফাংশন তৈরি করা
CREATE FUNCTION addNumbers(int, int) RETURNS INT
EXTERNAL NAME 'MyFunctions.addNumbers' LANGUAGE JAVA;
এখানে addNumbers ফাংশনটি HSQLDB ডেটাবেসে তৈরি করা হয়েছে। এটি MyFunctions.addNumbers Java মেথডকে রেফারেন্স করে, যা দুটি পূর্ণসংখ্যার যোগফল প্রদান করে।
৫. UDF ফাংশন ব্যবহার করা
একবার UDF তৈরি হয়ে গেলে, আপনি SQL কুয়েরিতে এই ফাংশনটি ব্যবহার করতে পারবেন। উদাহরণস্বরূপ:
SELECT addNumbers(5, 10) AS result;
এটি 5 + 10 এর যোগফল প্রদান করবে এবং ফলস্বরূপ result কলামে 15 প্রদর্শিত হবে।
UDF তৈরি করার জন্য কিছু গুরুত্বপূর্ণ পয়েন্ট
- Java-তে UDF তৈরি: HSQLDB-তে UDF তৈরি করতে হলে Java কোডের মাধ্যমে কাস্টম ফাংশন লিখতে হয় এবং সেটিকে ডেটাবেসে রেজিস্টার করতে হয়।
- Java Class লোড: আপনার Java ক্লাসটি
.jarফাইল হিসেবে ডেটাবেসে লোড করতে হবে। - কাস্টম লজিক: UDF এর মাধ্যমে আপনি যেকোনো কাস্টম লজিক বা গাণিতিক গণনা করতে পারেন যা স্ট্যান্ডার্ড SQL ফাংশন দ্বারা সম্ভব নয়।
উদাহরণ
ধরা যাক, আপনি একটি ফাংশন তৈরি করতে চান যা দুটি তারিখের মধ্যে দিনগুলির পার্থক্য বের করবে। আপনি এইভাবে একটি UDF তৈরি করতে পারেন:
import java.util.Date;
public class MyFunctions {
public static int daysBetween(Date startDate, Date endDate) {
long diffInMillies = endDate.getTime() - startDate.getTime();
return (int) (diffInMillies / (1000 * 60 * 60 * 24)); // Milliseconds to days
}
}
এখন, এই ফাংশনটিকে HSQLDB তে রেজিস্টার করা হবে এবং SQL কুয়েরিতে ব্যবহার করা যাবে:
CREATE FUNCTION daysBetween(DATE, DATE) RETURNS INT
EXTERNAL NAME 'MyFunctions.daysBetween' LANGUAGE JAVA;
এখন আপনি daysBetween ফাংশনটি ব্যবহার করতে পারেন:
SELECT daysBetween(DATE '2024-01-01', DATE '2024-12-31') AS days_diff;
এটি দুটি তারিখের মধ্যে মোট দিনগুলি বের করবে এবং ফলস্বরূপ কলামে দিবে।
সারাংশ
- User Defined Functions (UDF) HSQLDB তে Java কোড ব্যবহার করে তৈরি করা যায়, যা SQL কুয়েরিতে কাস্টম লজিক যুক্ত করতে সহায়ক।
- Java ক্লাসে UDF ফাংশন সংজ্ঞায়িত করতে হয় এবং তারপর HSQLDB তে রেজিস্টার করতে হয়।
- একবার রেজিস্টার করা হলে, আপনি SQL কুয়েরিতে এই কাস্টম ফাংশনগুলো ব্যবহার করতে পারবেন।
Read more