接下来创建一个删除ID无固定的记录,并且返回剩余的记录数,则需要两个语句,一个是DELETE语句,一个是获取剩余记录总数的语句,并且这个语句的类型因为需要返回,则需要设置为OUT
mysql> CREATE PROCEDURE ruarun(IN p_id INT UNSIGNED, OUT userNums INT UNSIGNED) -> BEGIN -> DELETE FROM users WHERE id = p_id; -> SELECT COUNT(id) FROM users INTO userNums; -> END -> // Query OK, 0 rows affected (0.00 sec)
INTO的作用是将SELECT表达式的结果放入userNums这个变量中,测试一下创建的存储过程:
mysql> SELECT -> COUNT(id) FROM users; -> // +-----------+ | count(id) | +-----------+ | 25 | +-----------+ 1 row in set (0.00 sec) mysql> CALL ruarun(44,@nums); -> // Query OK, 1 row affected (0.00 sec) mysql> SELECT @nums; -> // +-------+ | @nums | +-------+ | 24 | +-------+ 1 row in set (0.00 sec)
使用SElECT语句,或者SELECT…INTO语句 以及SET = @变量名 声明的变量是用户变量,用户变量跟MySQL客户端绑定,只对当前用户所使用的客户端生效
DECLARE称之为局部变量,声明的时候必须放在第一行只能作用于BEGIN~END语句块之间,运行完BEGIN~END语句,局部变量消失
请登录之后再进行评论