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 变量名 = ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IABQL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值