MySQL存储过程

  存储过程,可以说是将一些功能封装到一起就相当于存储过程,在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 ;



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章