存储过程,可以说是将一些功能封装到一起就相当于存储过程,在mysql中函数和存储过程是两个不同的东西,不要混淆。
建立存储过程:
1、声明存储过程
mysql> delimiter // "delimiter//"表示先把mysql结束符改成"//"
mysql> create procedure delstu ()
-> begin
-> delete from member;
-> end //
mysql> delimiter ; "delimiter ;"表示把结束符再改回到";"状态
2、调用存储过程
mysql> call delstu;
3、删除存储过程
mysql> drop procedure delstu;
建立可以传参数的存储过程
mysql> delimiter //
mysql> create procedure delstuline (in sid int) //in为传入值
-> begin
-> delete from student where ID = sid;
-> end //
mysql> delimiter ;
mysql> call delstuline(14); //调用存储过程时,就会把ID为14的数据清除
建立一个插入数据的存储过程
mysql> delimiter //
mysql> create procedure insertline (in name varchar(10),gender enum("男","女"),age tinyint,score tinyint,address varchar(200))
-> begin
-> insert into student (Name,Gender,Age,Score,Address) values (name,gender,age,score,address);
-> end //
mysql> delimiter ;
mysql> call insertline("小白","女",20,65,"北京市大兴区"); //调用存储过程将插入数据
建立一个统计数据的存储过程
mysql> delimiter //
mysql> create procedure countline (out tj int) //out为返回值
-> begin
-> select count(*) into tj from student;
-> end //
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
mysql> call countline(@tj); //调用存储过程
mysql> select @tj; //输出返回值
建立一个查看所有数据的存储过程
mysql> delimiter //
mysql> create procedure showtable()
-> begin
-> select * from student;
-> end //
mysql> delimiter ;
建立一个if循环存储过程
mysql> delimiter //
mysql> create procedure insertlines ()
-> begin
-> set @i = 0;
-> aa:loop
-> insert into student (Name,Gender,Age,Score,Address) values ("张三丰","男",80,97,"武当山");
-> set @i = @i + 1;
-> if @i < 10 the
-> iterate aa;
-> end if;
-> leave aa;
-> end loop aa;
-> end //
mysql> delimiter ;