Database Tutorials User-Defined Functions (UDF) তৈরি গাইড ও নোট

364

User-Defined Functions (UDF) হল SQLite-এ এমন ফাংশন যা আপনি নিজে তৈরি করতে পারেন, সাধারণত নির্দিষ্ট কাজ বা প্রক্রিয়াগুলোকে সহজ করার জন্য। SQLite স্ট্যান্ডার্ড ফাংশন যেমন SUM(), AVG(), ইত্যাদি সরবরাহ করে, তবে যদি আপনার কোনো বিশেষ কাজ করতে হয় যেটি পূর্বনির্ধারিত ফাংশন দ্বারা করা সম্ভব নয়, তাহলে আপনি নিজস্ব ফাংশন তৈরি করতে পারেন।

SQLite-এর UDF তৈরি করা সাধারণত একটি অ্যাপ্লিকেশন বা প্রোগ্রামিং ভাষার (যেমন Python, C, অথবা C++) মাধ্যমে করা হয়। UDF-এ আপনি আপনার কাস্টম ফাংশন তৈরি করতে পারেন যেগুলো SQL কুয়েরি দিয়ে SQLite ডাটাবেসে ব্যবহার করা যাবে।


UDF তৈরি করার সাধারণ ধাপ:

  1. UDF তৈরি করার জন্য একটি প্রোগ্রামিং ভাষা ব্যবহার করা হয়:
    • সাধারণত SQLite C বা Python ভাষার মাধ্যমে UDF তৈরি করা হয়। অন্যান্য ভাষার জন্যও লাইব্রেরি সমর্থন রয়েছে।
  2. UDF নিবন্ধন করা:
    • UDF তৈরি করার পর, আপনি এই ফাংশনটিকে SQLite তে নিবন্ধন করতে পারেন যাতে আপনি SQL কুয়েরি থেকে তা ব্যবহার করতে পারেন।

C-এ SQLite UDF তৈরি করা

SQLite C API ব্যবহার করে UDF তৈরি করা যায়। এখানে একটি উদাহরণ দেওয়া হলো যেখানে একটি কাস্টম ফাংশন তৈরি করা হয়েছে যা দুটি সংখ্যার যোগফল প্রদান করে।

ধাপ ১: C ফাইলে UDF কোড লিখা

#include <stdio.h>
#include <sqlite3.h>

// কাস্টম UDF ফাংশন যা দুটি সংখ্যার যোগফল প্রদান করে
static void add_numbers(sqlite3_context *context, int argc, sqlite3_value **argv) {
    if (argc != 2) {
        sqlite3_result_error(context, "Wrong number of arguments", -1);
        return;
    }

    // প্রথম আর্গুমেন্টে একটি সংখ্যা এবং দ্বিতীয় আর্গুমেন্টে আরেকটি সংখ্যা পাওয়া যাচ্ছে
    double num1 = sqlite3_value_double(argv[0]);
    double num2 = sqlite3_value_double(argv[1]);
    
    // যোগফল ক্যালকুলেট করে ফলাফল প্রদান করা
    sqlite3_result_double(context, num1 + num2);
}

int main() {
    sqlite3 *db;
    sqlite3_open(":memory:", &db);

    // UDF নিবন্ধন
    sqlite3_create_function(db, "add_numbers", 2, SQLITE_UTF8, NULL, add_numbers, NULL, NULL);

    // কুয়েরি চালানো যেখানে কাস্টম ফাংশন ব্যবহার করা হয়েছে
    sqlite3_exec(db, "CREATE TABLE test (a REAL, b REAL);", 0, 0, 0);
    sqlite3_exec(db, "INSERT INTO test (a, b) VALUES (3.5, 4.5);", 0, 0, 0);
    sqlite3_exec(db, "SELECT a, b, add_numbers(a, b) FROM test;", 0, 0, 0);

    sqlite3_close(db);
    return 0;
}

ধাপ ২: কাস্টম UDF নিবন্ধন

এখানে sqlite3_create_function ব্যবহার করা হয়েছে যা SQLite এ কাস্টম UDF নিবন্ধন করে। এই ফাংশনটি add_numbers নামে একটি UDF নিবন্ধন করেছে যেটি দুইটি আর্গুমেন্ট নিয়ে তাদের যোগফল প্রদান করবে।


Python-এ SQLite UDF তৈরি করা

Python ব্যবহার করে SQLite-এর UDF তৈরি করতে sqlite3 লাইব্রেরি ব্যবহার করা হয়।

ধাপ ১: Python কোড লিখা

import sqlite3

# কাস্টম UDF ফাংশন যা দুটি সংখ্যার যোগফল প্রদান করে
def add_numbers(num1, num2):
    return num1 + num2

# SQLite ডাটাবেসে সংযোগ
conn = sqlite3.connect(":memory:")
conn.create_function("add_numbers", 2, add_numbers)

# টেবিল তৈরি করা এবং কাস্টম ফাংশন ব্যবহার করা
conn.execute("CREATE TABLE test (a REAL, b REAL);")
conn.execute("INSERT INTO test (a, b) VALUES (3.5, 4.5);")

# কুয়েরি চালানো যেখানে কাস্টম ফাংশন ব্যবহার করা হয়েছে
cursor = conn.execute("SELECT a, b, add_numbers(a, b) FROM test;")
for row in cursor:
    print(row)

conn.close()

ধাপ ২: Python-এ UDF নিবন্ধন

Python-এ create_function ব্যবহার করে কাস্টম ফাংশনটি SQLite-এ নিবন্ধিত করা হয়। এখানে add_numbers ফাংশনটি দুটি আর্গুমেন্ট নিয়ে তাদের যোগফল প্রদান করবে।


UDF ব্যবহার করার সুবিধা

  1. কাস্টম লজিক প্রয়োগ: UDF এর মাধ্যমে আপনি SQLite তে আপনার নিজস্ব কাস্টম লজিক প্রয়োগ করতে পারেন, যা পূর্বনির্ধারিত ফাংশন দ্বারা সম্ভব নয়।
  2. এফিশিয়েন্ট ক্যালকুলেশন: UDF আপনার প্রোগ্রামিং ভাষায় সরাসরি ক্যালকুলেশন করার সুযোগ দেয়, যা অনেক সময় SQL কুয়েরি দ্বারা কঠিন হতে পারে।
  3. ফাংশন পুনরায় ব্যবহারযোগ্যতা: একবার একটি UDF তৈরি করার পর, আপনি সেই ফাংশনটি পুনরায় ব্যবহার করতে পারেন, যা কোড পুনঃব্যবহারযোগ্যতা বৃদ্ধি করে।

সারাংশ

User-Defined Functions (UDF) হল কাস্টম SQL ফাংশন যা আপনি SQLite তে তৈরি এবং ব্যবহার করতে পারেন। এটি সাধারণত C, Python, বা অন্যান্য ভাষা ব্যবহার করে তৈরি করা হয়। UDF ব্যবহারের মাধ্যমে আপনি SQL কুয়েরির মধ্যে আপনার নিজের লজিক বা অ্যালগরিদম প্রয়োগ করতে পারেন, যা SQLite তে থাকা স্ট্যান্ডার্ড ফাংশন দিয়ে করা সম্ভব নয়। C বা Python ব্যবহার করে সহজেই SQLite তে কাস্টম ফাংশন নিবন্ধন করা এবং ব্যবহার করা সম্ভব।

Content added By
Promotion

Are you sure to start over?

Loading...