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

Stored Procedure MySQL cập nhật bản ghi với điều kiện nhất định

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');