2.存储过程的变量

来源:网易云课堂《精通MySQL存储过程、函数和触发器》课程

讲师:huangxifeng607(黄锡峰)


笔记:

(1)存储过程的变量

需求:编写存储过程,使用变量取uid=2的用户名

delimiter $$
create procedure testa()
begin
declare my_name varchar(32) default '';
  set my_uname='hxf';
  select uname into my_uname from users where uid=2;
  select my_uname;
end;
$$
delimiter ;

特点:

1.变量的声明使用declare,一句declare只声明一个变量,变量必须先声明后使用

2.变量具有数据类型和长度,与mysql的SQL数据类型保持一致,因此甚至还能指定默认值、字符集和排序规则等

3.变量可以通过set来赋值,也可以通过select into的方式赋值

4.变量需要返回,可以使用select语句,如:select 变量名


(2)存储过程变量应用示例

需求:统计表hxf, users的行数量和users表中最早,最晚的注册时间

delimiter $$
create procedure stats_user()
begin
    begin
        declare hxf_sum int default 0;
        declare users_sum int default 0;
        select count(*) into hxf_sum from hxf;
        select count(*) into users_sum from users;
        select hxf_sum, users_sum;
    end;
    begin
        declare max_regtime timestamp;
        declare min_regtime timestamp;
        select max(regtime), min(regtime) into max_regtime, min_regtime from users;
        select hxf_sum, users_sum, max_regtime, min_regtime;
    end;
end;
$$
delimiter ;


1.变量是有作用域的,作用范围在begin与end块之间,end结束变量的作用范围即结束(上面代码第15行的前两个参数是错误的,已经超出了变量的作用域)

2.需要多个块之间传递值,可以使用全局变量,即放在所有代码块之前

3.传参变量是全局的,可以在多个块之间起作用


(3)小结

1.存储过程的变量及其特点与应用

2.变量的作用域

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值