Tạo Stored Procedure UPDATE có điều kiện trong MySQL
Kết hợp UPDATE ... WHERE bên trong CREATE PROCEDURE với tham số đầu vào.
Tạo bảng và dữ liệu
mysql> create table DemoTable (
Id int,
FirstName varchar(20),
LastName varchar(20)
);
Query OK, 0 rows affected (0.56 sec)
mysql> insert into DemoTable values(101,'David','Brown'); mysql> insert into DemoTable values(102,'Chris','Brown'); mysql> insert into DemoTable values(103,'John','Doe');
Tạo Stored Procedure cập nhật Id=101
mysql> delimiter //
mysql> create procedure update_sp(fName varchar(20), lName varchar(20))
-> begin
-> update DemoTable
-> set FirstName=fName, LastName=lName
-> where Id=101;
-> end
-> //
Query OK, 0 rows affected (0.12 sec)
mysql> delimiter ;
Gọi procedure
mysql> call update_sp('Adam','Smith');
Query OK, 1 row affected, 2 warnings (0.08 sec)
Kết quả
+------+-----------+----------+ | Id | FirstName | LastName | +------+-----------+----------+ | 101 | Adam | Smith | | 102 | Chris | Brown | | 103 | John | Doe | +------+-----------+----------+
Phân tích:
- Procedure nhận 2 tham số: fName, lName
- Cập nhật CỐ ĐỊNH Id=101 (hardcoded)
- Chỉ 1 hàng bị ảnh hưởng (Rows matched: 1)
Cải tiến: Procedure linh hoạt hơn
CREATE PROCEDURE update_sp(IN p_id INT, IN p_fname VARCHAR(20), IN p_lname VARCHAR(20))
BEGIN
UPDATE DemoTable
SET FirstName = p_fname, LastName = p_lname
WHERE Id = p_id;
END
Gọi: CALL update_sp(102, 'NewName', 'NewLast');