存储过程和存储函数是一些被用户定义的SQL语句的集合
存储过程可以被程序,触发器,或两外一个存储过程调用。
特点是执行速度快,提高系统性能,确保数据库安全等优点
1,创建存储过程
首先在创建存储过程中的时候需要用到分号,所以需要将结束标识符“;”更改为其他的符号,下面的语句用来更换结束标志符
- mysql> delimiter //
- mysql> select * from user //
- +----+----------+----------+---------------------+
- | id | username | password | createtime |
- +----+----------+----------+---------------------+
- | 1 | kenan | kenan | 2012-10-31 15:32:26 |
- | 3 | kenan | lele | 2012-10-31 15:32:26 |
- | 4 | lele | lele | NULL |
- | 5 | 1 | 1 | NULL |
- +----+----------+----------+---------------------+
- 4 rows in set (0.00 sec)
下面创建一个存储过程
- mysql> create procedure count_user (out count int)
- -> reads sql data
- -> begin
- -> select count(*) into count from user;
- -> end
- -> //
- Query OK, 0 rows affected (0.14 sec)
2,创建存储函数,和创建存储过程基本一样,只是有一点的差别
- mysql> create function get_username(user_id int)
- -> returns varchar(50)
- -> begin
- -> return (select username from user where id = user_id);
- -> end
- -> //
- Query OK, 0 rows affected (0.09 sec)
3,调用存储过程
- mysql> call count_user(@s)//
- Query OK, 1 row affected (0.00 sec)
- mysql> select @s
- -> //
- +------+
- | @s |
- +------+
- | 4 |
- +------+
- 1 row in set (0.00 sec)
4,调用存储函数
- mysql> select get_username(1)//
- +-----------------+
- | get_username(1) |
- +-----------------+
- | kenan |
- +-----------------+
- 1 row in set (0.06 sec)