存儲過程,可以說是將一些功能封裝到一起就相當於存儲過程,在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 ;