MySQL-এ কাস্টম ফাংশন তৈরি করতে `CREATE FUNCTION` স্টেটমেন্ট ব্যবহার করুন। ফাংশন অবশ্যই `DETERMINISTIC` বা `READS SQL DATA`/`MODIFIES SQL DATA` ক্যারاكتেরিস্টিক ঘোষণা করতে হয়। বাইনারি লগিং সক্রিয় থাকলে `log_bin_trust_function_creators = 1` সেট করতে হয়।
সিনট্যাক্স
DELIMITER //
DROP FUNCTION IF EXISTS yourFunctionName;
CREATE FUNCTION yourFunctionName(Param1 TYPE, ...) RETURNS return_type
BEGIN
DECLARE var_name TYPE DEFAULT default_value;
-- SQL statements
RETURN var_name;
END //
DELIMITER ;
উদাহরণ: ID দিয়ে নাম খুঁজে বের করার ফাংশন
mysql> CREATE TABLE ViewDemo (Id INT, Name VARCHAR(200), Age INT);
mysql> INSERT INTO ViewDemo VALUES (1,'John',23), (2,'Sam',24);
mysql> SET GLOBAL log_bin_trust_function_creators = 1;
mysql> DELIMITER //
mysql> CREATE FUNCTION searchRecord(yourId INT) RETURNS CHAR(100)
-> BEGIN
-> DECLARE Name1 CHAR(100) DEFAULT 'No Name Found For This Id';
-> SELECT Name INTO Name1 FROM ViewDemo WHERE Id = yourId;
-> RETURN Name1;
-> END //
Query OK, 0 rows affected (0.33 sec)
mysql> DELIMITER ;
-- টেস্ট
mysql> SELECT searchRecord(2) AS Found; -- Output: Sam
mysql> SELECT searchRecord(100) AS Found; -- Output: No Name Found For This Id
সীমাবদ্ধতা: ফাংশনে `SELECT ... INTO` ব্যবহার করা যায়, কিন্তু `SELECT *` রিটার্ন করা যায় না। টেবিল রিটার্ন করতেStored Procedure ব্যবহার করুন।