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

Tạo thủ tục lưu trữ MySQL đếm số hàng bị ảnh hưởng bởi truy vấn


Thủ tục sau đếm số hàng bị ảnh hưởng bởi một truy vấn MySQL:

mysql> Delimiter //
mysql> CREATE PROCEDURE `query`.`row_cnt` (IN command VarChar(60000))
    -> BEGIN
    -> SET @query = command;
    -> PREPARE stmt FROM @query;
    -> EXECUTE stmt;
    -> SELECT ROW_COUNT() AS 'Affected rows';
    -> END //
Query OK, 0 rows affected (0.00 sec)
mysql> Delimiter ;
mysql> Create table Testing123(First Varchar(20), Second Varchar(20));
Query OK, 0 rows affected (0.48 sec)
mysql> CALL row_cnt("INSERT INTO testing123(First,Second) Values('Testing First','Testing Second');");
+---------------+
| Affected rows |
+---------------+
|             1 |
+---------------+
1 row in set (0.10 sec)
Query OK, 0 rows affected (0.11 sec)

Giải thích:

  • Thủ tục nhận tham số command là chuỗi truy vấn SQL
  • PREPARE stmt FROM @query chuẩn bị câu lệnh
  • EXECUTE stmt thực thi
  • ROW_COUNT() trả về số hàng bị ảnh hưởng bởi câu lệnh vừa thực thi (INSERT/UPDATE/DELETE)
  • Sử dụng DELIMITER // để định nghĩa thủ tục chứa dấu chấm phẩy
Cách này hữu ích khi cần thực thi truy vấn động và biết số hàng thay đổi.