来源:网易云课堂《精通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 ;
2.需要多个块之间传递值,可以使用全局变量,即放在所有代码块之前
3.传参变量是全局的,可以在多个块之间起作用
(3)小结
1.存储过程的变量及其特点与应用
2.变量的作用域