Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

จะสร้างฟังก์ชัน MySQL อย่างง่ายได้อย่างไร


คุณสามารถสร้างฟังก์ชันโดยใช้คำสั่ง 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 วินาที)