mysql-存储过程
2018-10-28 本文已影响0人
黄一倚
创建无参数的存储过程
mysql> create procedure sp1() select version();
![](https://img.haomeiwen.com/i5590388/bafbf1c19ff23daf.png)
调用无参数存储过程
mysql> call sp1;
或
mysql> call sp1();
![](https://img.haomeiwen.com/i5590388/bf81d2d9118a8ccb.png)
![](https://img.haomeiwen.com/i5590388/6e2b5866cd8dbd40.png)
删除存储过程
drop procedure sp1;
创建带有IN类型的存储过程
修改结束标识符为//
mysql> delimiter //
mysql> create procedure removeUserById(IN id int)
-> begin
-> delete from user where uid = id;
-> end
-> //
Query OK, 0 rows affected (0.02 sec)
调用带有参数的存储过程
mysql> call removeUserById(1)//
![](https://img.haomeiwen.com/i5590388/0e320c14840dabbf.png)
![](https://img.haomeiwen.com/i5590388/82f906c85aab03a5.png)
创建带有IN和OUT参数的存储过程
IN 表示在调用存储过程时要传入的参数,OUT表示存储过程返回值的变量
mysql> delimiter //
mysql> create procedure removeUserAndReturnUserNums(IN id int,OUT userNums int)
-> begin
-> delete from user where uid =id;
-> select count(id) from user INTO userNums;
-> end
-> //
Query OK, 0 rows affected (0.03 sec)
调用有OUT参数的存储过程
调用存储过程时,OUT传入的是一个变量,在mysql中,变量的形式为@开头的合法变量名,形如@nums 在这里表示的是user表中记录的数量
mysql> call removeUserAndReturnUserNums(2,@nums)//
Query OK, 1 row affected (0.05 sec)
查看存储过程返回的值
mysql> select @nums;
![](https://img.haomeiwen.com/i5590388/6884bc11616793ef.png)
![](https://img.haomeiwen.com/i5590388/7e948520fb03232b.png)