zoukankan      html  css  js  c++  java
  • 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.


           @用于设置用户变量,  @@用于设置系统变量。

           要想设置一个GLOBAL变量的值,使用下面的语法:
      mysql> SET GLOBAL sort_buffer_size=value;
      mysql> SET @@global.sort_buffer_size=value;
      要想设置一个SESSION变量的值,使用下面的语法:
      mysql> SET SESSION sort_buffer_size=value;
      mysql> SET @@session.sort_buffer_size=value;
      mysql> SET sort_buffer_size=value;

          

  • 相关阅读:
    Windows XP下 Android开发环境 搭建
    Android程序的入口点
    在eclipse里 新建android项目时 提示找不到proguard.cfg
    64位WIN7系统 下 搭建Android开发环境
    在eclipse里 新建android项目时 提示找不到proguard.cfg
    This Android SDK requires Android Developer Toolkit version 20.0.0 or above
    This Android SDK requires Android Developer Toolkit version 20.0.0 or above
    Android requires compiler compliance level 5.0 or 6.0. Found '1.4' instead
    Windows XP下 Android开发环境 搭建
    Android程序的入口点
  • 原文地址:https://www.cnblogs.com/lnlvinso/p/4101915.html
Copyright © 2011-2022 走看看