Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cách viết hàm lưu trữ MySQL cập nhật giá trị trong bảng


Như chúng ta biết, hàm (function) phù hợp nhất khi cần trả về một kết quả. Do đó, khi tạo hàm lưu trữ để thao tác với bảng như INSERT hoặc UPDATE, cách viết sẽ khá giống với thủ tục lưu trữ (stored procedure).

Ví dụ: Cập nhật điểm sinh viên

Trong ví dụ sau, chúng ta tạo hàm lưu trữ tên tbl_Update để cập nhật giá trị trong bảng student_marks.

mysql> Select * from student_marks//
+---------+------+---------+---------+---------+
| Name    | Math | English | Science | History |
+---------+------+---------+---------+---------+
| Raman   |   95 |      89 |      85 |      81 |
| Rahul   |   90 |      87 |      86 |      81 |
| Mohit   |   90 |      85 |      86 |      81 |
| Saurabh | NULL |    NULL |    NULL |    NULL |
+---------+------+---------+---------+---------+
4 rows in set (0.00 sec)

mysql> Create Function tbl_Update(S_name Varchar(50),M1 INT,M2 INT,M3 INT,M4 INT)
    -> RETURNS INT
    -> DETERMINISTIC
    -> BEGIN
    -> UPDATE student_marks SET Math = M1,English = M2, Science = M3, History =M4 WHERE Name = S_name;
    -> RETURN 1;
    -> END //
Query OK, 0 rows affected (0.03 sec)

mysql> Select tbl_update('Saurabh',85,69,75,82);
+------------------------------------+
| tbl_update('Saurabh',85,69,75,82)  |
+------------------------------------+
|                                  1 |
+------------------------------------+
1 row in set (0.07 sec)

mysql> Select * from Student_marks;
+---------+------+---------+---------+---------+
| Name    | Math | English | Science | History |
+---------+------+---------+---------+---------+
| Raman   |   95 |      89 |      85 |      81 |
| Rahul   |   90 |      87 |      86 |      81 |
| Mohit   |   90 |      85 |      86 |      81 |
| Saurabh |   85 |      69 |      75 |      82 |
+---------+------+---------+---------+---------+
4 rows in set (0.00 sec)

Lưu ý: Hàm phải trả về một giá trị (ở đây là RETURN 1) dù mục đích chính là cập nhật dữ liệu. Đây là khác biệt so với stored procedure có thể không trả về giá trị.