MySQL的存储过程

  概念
 
  MySQL5.0版本开始支持存储过程,存储过程就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于JAVA语言中的方法,存储过就是数据库SQL与层层面的代码封装与重用
 
  特性
 
  1.有输入输出参数,可以声明变量,有if/else/case/while等控制语句,通过编写存储过程,可以实现复杂的逻辑功能
 
  2.函数的普通特性:模块化,封装,代码复用
 
  3.速度快,只有首次执行需要经过编译和优化步骤,后续被调用可以直接执行,省去以上步骤
 
  格式
 
  创建存储过程
 
  – 创建存储过程
 
  delimiter $$
 
  create procedure proc01()
 
  begin
 
  select empno,ename from emp;
 
  end $$
 
  delimiter ;
 
  – 调用存储过程
 
  call proc01;
 
  定义变量
 
  局部变量
 
  用户自定义,在begin/end块中有效
 
  delimiter $$
 
  create procedure proc02()
 
  begin
 
  declare var_name01 varchar(20) default ‘aaa’;  — 声明/定义变量
 
  set var_naem01 = ‘zhangsan’; — 给变量赋值
 
  select var_name01; — 输出变量的值
 
  end $$
 
  dilimiter ;
 
  call proc02();
 
  用户变量
 
  用户自定义,当前会话(连接)有效。类比java的成员变量
 
  delimiter $$
 
  create procedure proc04()
 
  begin
 
  set @var_name01 = ‘beijing’;
 
  select @var_name01;
 
  end $$
 
  dilimiter ;
 
  call proc04();
 
  select @var_name01; — 外部也是可以使用用户变量
 
  系统变量
 
  1.系统变量有分为全局变量与会话变量
 
  2.全局变量在MYSQL启动的时候由服务器自动将他的初始化为默认值,这些默认值可以通过更改my.ini这个文件来更改
 
  3.会话变量在每次建立一个新的连接的时候,由MYSQL来初始化,MYSQL会将当前所有全局变量的值复制一份,来作为会话变量
 
  4.也就是说,如果在建立会话以后,没有手动更改过会话变量与全局变量的值,那所有这些变量的值都是一样的
 
  5.全局变量与会话变量的区别在于,对全局变量的修改会影响整个服务器,但是对会话变量的修改,只会影响到当前的会话(也就是当前的数据库连接)
 
  6.有些系统变量的值是可以利用语句来动态进行更改的,但是有些系统变量的值缺是只读的,对于那些可以更改的系统变量,我们可以利用set语句进行更改
 
  系统变量-全局变量
 
  由系统系统,在整个数据库中有效
 
  存储过程
 
  存储过程传参-in
 
  in表示传入的参数,可以传入数值或者变量,即使传入变量,并不会改变变量的值,可以内部更改,仅仅作用在函数范围内
 
  delimiter $$
 
  create procedure proc06(in param_empno int)
 
  begin
 
  select*from emp where empno = param_empno
 
  end $$
 
  delimiter ;
 
  call proc06(1001);
 
  多个参数传参

如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h64871.shtml

张贴在3