คุณสามารถสร้างฟังก์ชันโดยใช้คำสั่ง create function ไวยากรณ์มีดังนี้ −
delimiter //DROP FUNCTION ถ้ามี yourFunctionName;CREATE FUNCTION yourFunctionName(Parameter1,...N) คืนค่า typeBEGIN# การประกาศตัวแปร;# คำสั่ง MySQLEND //delimiter;
ขั้นแรก เราจะสร้างตารางและเพิ่มระเบียนบางส่วนในตาราง หลังจากนั้นจะมีการสร้างฟังก์ชันอย่างง่าย ต่อไปนี้เป็นแบบสอบถามเพื่อสร้างตาราง −
mysql> สร้างตาราง ViewDemo −> ( −> Id int, −> Name varchar(200), −> Age int −> );ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.58 วินาที)
แทรกระเบียนในตารางโดยใช้คำสั่งแทรก แบบสอบถามมีดังนี้ −
mysql> แทรกลงในค่า ViewDemo (1,'John', 23); แบบสอบถามตกลง, 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงในค่า ViewDemo (2, 'Sam', 24); แบบสอบถามตกลง 1 แถว ได้รับผลกระทบ (0.15 วินาที)
แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังนี้ −
mysql> เลือก *จาก ViewDemo;
ต่อไปนี้เป็นผลลัพธ์ -
<ก่อนหน้า>+------+------+------+| รหัส | ชื่อ | อายุ |+------+------+------+| 1 | จอห์น | 23 || 2 | แซม | 24 |+------+------+------+2 แถวในชุด (0.00 วินาที)ตอนนี้เราจะสร้างฟังก์ชันที่ใช้พารามิเตอร์จำนวนเต็มและส่งกลับสตริง จุดประสงค์ของฟังก์ชันนี้คือการค้นหาบันทึกด้วย id ที่ให้มา หาก id ที่ระบุตรงกับ id ของตาราง มันจะส่งคืนชื่อ มิฉะนั้น จะมีข้อความแสดงข้อผิดพลาดเหมือนไม่พบ
ฟังก์ชันมีดังนี้ −
mysql> SET GLOBAL log_bin_trust_function_creators =1; แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.00 วินาที) mysql> ฟังก์ชันดร็อปถ้ามี searchRecord; -> -> สร้างฟังก์ชัน searchRecord(yourId int) คืนค่า char(100) -> start -> ประกาศ Name1 char(100) ค่าเริ่มต้น "ไม่พบชื่อสำหรับรหัสนี้"; -> เลือกชื่อลงใน Name1 จาก ViewDemo โดยที่ Id =yourId; -> ส่งคืน Name1; -> สิ้นสุด // แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.21 วินาที) แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.33 วินาที) mysql> ตัวคั่น;
ตอนนี้ให้ตรวจสอบว่าฟังก์ชันทำงานกับ id ที่กำหนดหรือไม่
กรณีที่ 1 − เมื่อมี id ที่ระบุ
แบบสอบถามมีดังนี้ −
mysql> เลือก searchRecord(2) เป็น Found;
ต่อไปนี้เป็นผลลัพธ์ -
<ก่อนหน้า>+-------+| พบ |+-------+| แซม |+-------+1 แถวในชุด (0.00 วินาที)กรณีที่ 2 - เมื่อไม่มี id ที่ระบุ
แบบสอบถามมีดังนี้ −
mysql> เลือก searchRecord(100) เป็น Found;
ต่อไปนี้เป็นผลลัพธ์ที่แสดงการบันทึกว่าไม่มี -
<ก่อนหน้า>+---------------------------+| พบ |+--------------------------+| ไม่พบชื่อสำหรับรหัสนี้ |+--------------------------- +1 แถวในชุด (0.00 วินาที)