需求:编写存储过程,使用变量取uid=2的用户名
Delimiter $$ create procedure testa() Begin Declare my_uname 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 变量名
需求:统计表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结束变量的作用范围即结束。
2.需要多个块之间传递值,可以使用全局变量,即放在所有代码块之前。
3.传参变量是全局的,可以在多个块之间起作用