MySQL存储过程定义
存储过程,英文名Stored Procedure,是一组为了完成特定功能的 SQL 语句集合。
存储过程简单的说,就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于JAVA语言中的方法。
MySQL存储过程作用
存储过程的作用,主要包含如下3点:
1. 存储过程增强了SQL语言的功能和灵活性
存储过程可以用流控制语句编写 ,有很强的灵活性,可以完成复杂的判断和较复杂的运算。
2.存储过程允许标准组件是编程
存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句 。
3. 存储过程能实现较快的执行速度
如果某一操作包含大量的Transaction-SQL代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。
MySQL存储过程语法
1.创建存储过程
语法如下:
- CREATE PROCEDURE 存储过程名称 ([ 参数列表 ])
- BEGIN
- -- SQL语句
- END ;
2.调用存储过程
语法如下:
- CALL 存储过程名称();
3.修改存储过程
- ALTER PROCEDURE sp_name [characteristic...]
- characteristic:
- {CONTAINS SQL|NO SQL|READS SQL DATA|MODIFIES SQL DATA}|SQL SECURITY {DEFINAER|INVOKER}|COMMENT 'string'
4.删除存储过程
语法如下:
- drop procedure sp_name;
5.判断循环等
1)变量的使用
- -- *定义变量
- DECLARE 变量名称 数据类型 [DEFAULT 默认值]
- -- DECLARE定义的是局部变量 只能用在BEGIN END 范围之内
- -- *变量赋值
- SET 变量名称 = 值;
2)if语句的使用
- if 条件 then
- statement
- else
- statement
- end if;
3)case语句
- -- 标准语法
- CASE 表达式
- WHEN 值1 THEN 执行sql语句1;
- [WHEN 值2 THEN 执行sql语句2;]
- ...
- [ELSE 执行sql语句n;]
- END CASE;
4)循环语句
- WHILE 条件判断语句 DO
- 循环体语句;
- 条件控制语句;
- END WHILE;
MySQL存储过程实例
给大家举一个简单存储过程实例,代码如下:
users表如下:
创建存储过程,传入性别(男或女),显示对应性别的用户id,返回对应性别的人数。
代码示例如下:
- #DELIMITER $$
- CREATE PROCEDURE user_procedure(IN sex VARCHAR(2) character set utf8,OUT num INT)
- BEGIN
- SELECT id FROM users WHERE gender=sex;
- SELECT FOUND_ROWS() INTO num;
- END #$$
- #DELIMITER ;