MySQL---储存过程
2017-07-11 10:55
337 查看
创建存储过程
CREATE PROCEDURE sp_name ([proc_parameter[,…]])routine_body
proc_parameter:
- [IN|OUT|INOUT] param_name type
参数
- IN,表示给参数的值必须在调用存储过程时指定
- OUT,表示该参数的额值可以被存储过程改变,并可以返回
- INOUT,表示该参数的调用时指定,并且可以被改变和返回
调用存储过程
CALL sp_name([parameter[,…]])CALL sp_name[()]
无参过程的调用可以不写小括号
# 创建无参数的储存过程 mysql> CREATE PROCEDURE sp1() SELECT VERSION(); # 调用无参数的储存过程可以不加括号 mysql> CALL sp1; mysql> CALL sp1(); +------------+ | VERSION() | +------------+ | 5.7.18-log | +------------+
# 创建IN类型参数 mysql> CREATE PROCEDURE removeUserById(IN p_id INT UNSIGNED) -> BEGIN -> DELETE FROM user WHERE id = p_id ; -> END -> // mysql> CALL removeUserById(9)//
删除储存过程
DROP PROCEDURE [IF EXISTS] sp_name示例
// 删除指定的记录,并返回剩余记录的数量 mysql> CREATE PROCEDURE removeUserAndReturnUserNums(IN p_id INT UNSIGNED,OUT userNums INT UNSIGNED) -> BEGIN -> DELETE FROM user WHERE id = p_id; -> SELECT COUNT(id) FROM user INTO userNums; -> END -> // Query OK, 0 rows affected (0.00 sec)
ROW_COUNT(); 被增删改更改的行数
# 使用ROW_COUNT() 获得被更改的行数 mysql> DELIMITER // mysql> CREATE PROCEDURE removeUserByUserName(IN user_name VARCHAR(20),OUT deleteCount INT,OUT restCount INT) -> BEGIN -> DELETE FROM user WHERE username = user_name; -> SELECT ROW_COUNT() INTO deleteCount; -> SELECT COUNT(id) FROM user INTO restCount; -> END -> // mysql> SELECT @a,@b; +------+------+ | @a | @b | +------+------+ | 3 | 4 | +------+------+
相关文章推荐
- mysql储存过程
- mysql储存函过程和储存函数都属于存储程序
- mysql储存过程
- MySQL 储存过程-原理
- Navicat + Mysql + Java 储存过程简单示例
- mysql 储存过程的特点 (翻译)
- MySQL语法复习--储存过程与储存函数
- mysql 储存过程游标的使用
- mysql储存过程以及定时调度清除数据
- MySQL定时任务event,储存过程(定时删除指定时间前90天指定表的数据)
- MySQL 储存过程-原理、语法、函数详细说明
- mysql储存过程以及定时调度清除数据
- MySQL定时任务event,储存过程(定时删除指定时间前90天指定表的数据)
- MYSQL 储存过程 用户登录更新token创建时间,过期时间,账户是否冻结
- MySQL定时任务event,储存过程(定时删除指定时间前90天指定表的数据)
- mysql 储存过程
- Mysql储存过程-原理、语法、函数详细说明
- mysql 储存过程的一些问题
- MySQL储存过程详解
- MySQL储存过程的步骤