• 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;

          

  • 相关阅读:
    OLEDB 数据变更通知
    Python处理正则表达式超时的办法
    OLEDB 静态绑定和数据转化接口
    Keepalived+LVS(DR)+MySQL
    Keepalived+Nginx实现Nginx的高可用
    ISCSI存储
    memcached随笔练习
    Varnish快速安装及测试
    Oracle及其相关软件历史版本下载地址
    使用VMwaver 克隆CentOS 6.9网卡配置报错
  • 原文地址:https://www.cnblogs.com/lnlvinso/p/4101915.html
Copyright © 2020-2023  润新知