MySQL 如何创建用于更新MySQL表中的值的存储过程?
我们可以使用IN运算符创建一个存储过程来更新MySQL表中的值。为了使它更容易理解,我们将采用一个名为“student_info”的表的示例,其中包含以下数据-
mysql> Select * from student_info;
+------+---------+------------+------------+
| id | Name | Address | Subject |
+------+---------+------------+------------+
| 101 | YashPal | Amritsar | History |
| 105 | Gaurav | Jaipur | Literature |
| 110 | Rahul | Chandigarh | History |
| 125 | Raman | Bangalore | Computers |
+------+---------+------------+------------+
4 rows in set (0.01 sec)
现在,通过创建以下名为“Update_studentinfo”的存储过程,我们可以更新“student_info”表中的值-
mysql> DELIMITER // ;
mysql> Create Procedure Update_studentinfo ( IN p_id INT, IN p_address varchar(20))
-> BEGIN
-> UPDATE student_info
-> SET
-> address = p_address WHERE id = p_id;
-> END //
Query OK, 0 rows affected (0.13 sec)
现在,调用该存储过程并用我们想要更新表中的值的值进行更新,如下所示-
mysql> Delimiter ; //
mysql> CALL Update_studentinfo(125, 'Shimla');
Query OK, 1 row affected (0.14 sec)
mysql> Select * from student_info;
+------+---------+------------+------------+
| id | Name | Address | Subject |
+------+---------+------------+------------+
| 101 | YashPal | Amritsar | History |
| 105 | Gaurav | Jaipur | Literature |
| 110 | Rahul | Chandigarh | History |
| 125 | Raman | Shimla | Computers |
+------+---------+------------+------------+
4 rows in set (0.00 sec)
上面的结果集显示,ID = 125的记录的地址已在表中更新。
阅读更多:MySQL 教程