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ố
commandlà chuỗi truy vấn SQL PREPARE stmt FROM @querychuẩn bị câu lệnhEXECUTE stmtthực thiROW_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