存储过程语法
CREATE
PROCEDURE sp_name([proc_parameter[,...]])
[characteristic...] routine_body
1、其中proc_parameter的规定如下
proc_parameter:[IN | OUT | INOUT ]param_name type
IN:表示当我们调用存储过程时可以传递参数给存储过程
OUT:关键字OUT指出相应的参数用来从存储过程传出一个值返回给调用者
INOUT:可以对存储过程传入和传出类型的参数
2、type可以是任意的MySQL数据类型
3、characteristic的内容如下
4、routine_body主要是合法的SQL语句
创建一个存储过程示例
1、创建存储过程
mysql> create table stu(id int(11) auto_increment primary key,name varchar(10));
mysql> delimiter //
mysql> drop procedure if exists stuproc$$
mysql> create procedure stuproc()
-> begin
-> declare x int;
-> set x = 1;
-> while x<=1000 do
-> insert into stu(name) values('zou');
-> set x=x+1;
-> end while;
-> end//
这里我创建了一个存储stuproc()过程用于向表stu中存储数据。这里我使用delimiter 用于告诉命令行一个Statement命令以//结尾,而不是以’ , ‘结尾。如果我们的begin….end中只有一条语句,那么我们就不需要使用delimiter命令。
2、调用存储过程
call stuproc();
结果
+------+------+
| id | name |
+------+------+
| 1 | zou |
| 2 | zou |
| 3 | zou |
....
....
| 997 | zou |
| 998 | zou |
| 999 | zou |
| 1000 | zou |
| 1001 | zou |
| 1002 | zou |
+------+------+
3、删除stuproc()存储过程
drop procedure stuproc();