首页 > 代码库 > MySQL存储过程

MySQL存储过程

  下面是一个MySQL存储过程的简单例子,  目的是返回最新插入的一条记录的id值。   

 demiliter |      drop  procedure if exists addUser |      create procedure addUser(in pname varchar(40),in birthday date,out pid int)          begin          insert into user(name,birthday) values (pname,birthday);                      select last_insert_id into pid;          end |      demilter;

        MySQL中执行一条语句的依据是分号(";"),碰到了”;“则会将之前的输入作为一条语句来执行。 demiliter |会将判断的依据由”;“换成”|“,碰到”|“认为是一条语句的结束。如果不进行转换,遇到”;“将之前的执行则一定会出错。  

       上面的例子现用 demiliter |会将判断的依据由”;“换成”|“,最后再用demiliter ;会将判断的依据由”|“换成”;“。

       创建存储过程的语法是 create procedure名称(输入/输出,参数名,参数类型),对应于例子中的 create procedure addUser(in pname varchar(40),in birthday date,out pid int)。
       begin和end之间的就是存储过程要完成的功能。

      

       create procedure的参数类型有in,out,inout三种。

       in和out,inout的不同点:修改的结果将不能返回,可以看下面的例子。      

 demiliter //      drop  procedure if exists in_paramter_test//      create procedure  in_paramter_test(in p_in int)          begin         select  p_in ;                   set  p_in =2;                   select  p_in ;         end //      demilter;

      设置临时变量:mysql > set @p_in = 1;

      mysql >call in_paramter_test(@p_in);

     +--------+

     |   p_in  |

     +--------+

      |     1    |

      +--------+

 

     +--------+

     |   p_in  |

     +--------+

      |     2    |

      +--------+

       mysql >select @p_in;

     +--------+

     |   p_in  |

     +--------+

      |    1    |

      +--------+

     使用out的例子:

 demiliter //      drop  procedure if exists out_paramter_test//      create procedure  out_paramter_test(out p_out int)          begin         select  p_out ;                   set  p_in =2;                   select  p_out ;         end //      demilter;

       执行和in相同的操作,结果都是2.


       @用户变量,连接参数。

 

 

      

 

MySQL存储过程