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

วิธีสร้าง MySQL Stored Function ที่ใช้ข้อมูล Dynamic จากตาราง


MySQL Stored Functions สามารถอ้างอิงตารางได้ แต่ไม่สามารถใช้คำสั่งที่คืนชุดผลลัพธ์ได้ ดังนั้นเราสามารถบอกได้ว่าไม่มีคำสั่ง SELECT ที่คืนชุดผลลัพธ์ แต่เราสามารถใช้ SELECT INTO เพื่อแก้ปัญหานั้นได้ ตัวอย่างเช่น เรากำลังสร้าง Function Avg_marks ที่ใช้ข้อมูล Dynamic จากตารางชื่อ Student_marks ซึ่งมีเรคคอร์ดดังนี้ เพื่อคำนวณค่าเฉลี่ยของคะแนน

mysql> Select * from Student_marks; 
+-------+------+---------+---------+---------+ 
| Name  | Math | English | Science | History | 
+-------+------+---------+---------+---------+ 
| Raman |   95 |      89 |      85 |      81 | 
| Rahul |   90 |      87 |      86 |      81 | 
+-------+------+---------+---------+---------+ 
2 rows in set (0.00 sec) 
mysql> DELIMITER // 
mysql> Create Function Avg_marks(S_name Varchar(50)) 
    -> RETURNS INT 
    -> DETERMINISTIC 
    -> BEGIN 
    -> DECLARE M1,M2,M3,M4,avg INT; 
    -> SELECT Math,English,Science,History INTO M1,M2,M3,M4 FROM Student_marks WHERE Name = S_name; 
    -> SET avg = (M1+M2+M3+M4)/4; 
    -> RETURN avg; 
    -> END // 
Query OK, 0 rows affected (0.01 sec) 
mysql> DELIMITER ; 
mysql> Select Avg_marks('Raman') AS 'Raman_Marks'; 
+-------------+ 
| Raman_Marks | 
+-------------+ 
|          88 | 
+-------------+ 
1 row in set (0.07 sec) 
mysql> Select Avg_marks('Rahul') AS 'Raman_Marks'; 
+-------------+ 
| Raman_Marks | 
+-------------+ 
|          86 | 
+-------------+ 
1 row in set (0.00 sec)