Mysql存储过程的变量定义

1.局部变量

用户自定义,在begin/end块中有效

语法:declare  变量名  数据类型  [default 默认值]
举例:declare  name  varchar(10);
delimiter  $
create  procedure  func()
begin
    declare name varchar(10) default '张三';
    set name = '李四';--给变量赋值
    select name;--输出变量的值
end $
delimiter;

call func();--调用

另一种赋值方式:用select...into...将查询结果赋值给变量 。

查询的返回结果必须是单行单列,例如

delimiter  $
create  procedure  func()
begin
    declare name varchar(10);
    /*将查询结果classname赋值给变量name*/
    SELECT classname into name from class WHERE classname='数学';
    select name;
end $
delimiter;

2.用户变量

当前会话连接有效,类比java的成员变量

语法:set @变量名;
delimiter  $
create  procedure  func()
begin
   set @name='张三';
end $
delimiter;

call func();--调用一次后,@name变量就可以在外部使用了
SELECT @name;

3.系统变量

  • 系统变量又分为全局变量与会话变量
  • 全局变量在Mysql启动时由服务器自动将它们初始化为默认值,这些默认值可以通过my.ini文件修改
  • 会话变量在每次建立一个新的连接时,由Mysql初始化。mysql会将当前所有全局变量的值复制一份,来作为会话变量。
  • 全局变量与会话变量的区别在于,对全局变量修改会影响到整个服务器,但是对会话变量修改,只会影响当前会话(也就是当前·数据库的连接)
  • 有些系统变量的值可以利用语句来动态修改,但是有些变量的值是只读的,对于那些可更改的系统变量,可以利用set语句修改
--系统变量(全局变量)
--查看全局变量
show  global variables;
--查看某全局变量
select  @@gloabal.变量名;
--修改全局变量的值
set gloabal 变量名 = ;
--系统变量(会话变量)
--查看会话变量
show session variables;
--查看某会话变量
select @@session.变量名;
--修改会话变量值
set session 变量名 = ;

你可能感兴趣的:(Mysql,mysql,数据库,database)