2.存储过程的变量

来源:互联网 发布:网络最火说唱歌手排名 编辑:程序博客网 时间:2024/05/26 09:56

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

讲师:huangxifeng607(黄锡峰)


笔记:

(1)存储过程的变量

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

delimiter $$create procedure testa()begindeclare 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.变量的作用域