nysql存储过程中变量的赋值

Mysql存储过程查询结果赋值到变量的方法
 
把查询结果赋值到变量,大部分情况下使用游标来完成,但是如果明确知道查询结果只有一行(例如统计记录的数量,某个字段求和等),其实可以使用set或into的方式来实现赋值。示例代码:
 
个人认为第三种方法比较合适,所以大家记住第三种就可以了,无论查出来的结果是单行还是单列都可以搞定。
 
BEGIN
SELECT id,name,sex,age INTO @t,@t2,@t3,@t4 FROM user1 WHERE id=1; SELECT @t,@t2,@t3,@t4;
END
 
很简单和方便。
 
如果是多行多列就要用到游标和虚拟表了。
 
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
01
drop table if exists test_tbl;
02
create table test_tbl ( name varchar (20), status int (2));
03
insert into test_tbl values ( 'abc' , 1),( 'edf' , 2),( 'xyz' , 3);
04
 
05
drop procedure IF EXISTS pro_test_3;
06
delimiter //
07
create procedure pro_test_3()
08
begin
09
--  方式 1
10
     DECLARE cnt INT DEFAULT 0;
11
     select count (*) into cnt from test_tbl;
12
     select cnt;
13
 
14
--  方式 2
15
     set @cnt = ( select count (*) from test_tbl);
16
     select @cnt;
17
 
18
--  方式 3
19
     select count (*) into @cnt1 from test_tbl;
20
     select @cnt1;
21
 
22
--  多个列的情况下似乎只能用 into 方式
23
     select max (status), avg (status) into @ max , @ avg from test_tbl;
24
     select @ max , @ avg ;
25
end
26
//
27
delimiter ;
28
 
29
call pro_test_3();
 

猜你喜欢

转载自747017186.iteye.com/blog/2091979