1 -- 存储过程 相当于没有返回值的函数
2 -- 创建过程
3 -- create procedure 过程名 ([参数名])
4 -- begin
5 -- 过程体
6 -- end
7 -- 查看过程
8 -- show procedure status [like 'pro'];
9 -- 查看创建语句
10 -- show create procedure;
11 -- 调用过程 过程无返回值 无法用select调用
12 -- call 过程名(参数名);
13 -- 删除过程
14 -- drop procedure 过程名;
15 -- 过程参数
16 -- 过程有自己的参数类型限定
17 IN :可以是数值也可以是变量,数据只是从外部传入内部使用,
18 OUT :只能是变量,内部修改会影响外部,只允许过程内部使用(不用外部数据),外部给的变量被先清空才会进入内部,可以将内部获得的值返回给外部使用
19 INOUT :只能传递变量 内部修改会影响外,外部修改也会影响内部
20 -- 基本使用
21 -- create procedure 过程名(int 形参名字 数据类型 ,out 形参名字 数据类型,inout 形参名字 数据类型)
22 --
23 -- 存储过程相对于变量曹组是滞后的,在存储过程调用结束后,系统会将局部变量返回给全局变量
24 SET @int_1 = 1;
25 SET @int_2 = 2;
26 SET @int_3 = 3;
27 DELIMITER $$
28 CREATE PROCEDURE pro1(IN int_1 INT,OUT int_2 INT, INOUT int_3 INT)
29 -- CREATE PROCEDURE pro1()
30 BEGIN
31 -- 查看三个变量
32 SELECT int_1,int_2,int_3;
33 -- int_2值一定为null ,
34 SET int_1 = int_1+5;
35 SET int_2 = int_2+5;
36 SET int_3 = int_3+5;
37 SELECT int_1,int_2,int_3;
38 -- 查看全局变量
39 SELECT @int_1,@int_2,@int_3;
40 END$$
41 DELIMITER ;
42
43 SELECT @int_1,@int_2,@int_3;
44 CALL tt.pro1(@int_1,@int_2,@int_3);
45 SELECT @int_1,@int_2,@int_3;
46
47 mysql> SELECT @int_1,@int_2,@int_3;
1 mysql> SELECT @int_1,@int_2,@int_3;
2 +--------+--------+--------+
3 | @int_1 | @int_2 | @int_3 |
4 +--------+--------+--------+
5 | 1 | 2 | 3 |
6 +--------+--------+--------+
7 1 ROW IN SET (0.00 sec)
8
9 mysql> CALL tt.pro1(@int_1,@int_2,@int_3);
10 +-------+-------+-------+
11 | int_1 | int_2 | int_3 |
12 +-------+-------+-------+
13 | 1 | NULL | 3 |
14 +-------+-------+-------+
15 1 ROW IN SET (0.01 sec)
16
17 +-------+-------+-------+
18 | int_1 | int_2 | int_3 |
19 +-------+-------+-------+
20 | 6 | NULL | 8 |
21 +-------+-------+-------+
22 1 ROW IN SET (0.05 sec)
23
24 +--------+--------+--------+
25 | @int_1 | @int_2 | @int_3 |
26 +--------+--------+--------+
27 | 1 | 2 | 3 |
28 +--------+--------+--------+
29 1 ROW IN SET (0.11 sec)
30
31 QUERY OK, 0 ROWS affected (0.16 sec)
32
33 mysql> SELECT @int_1,@int_2,@int_3;
34 +--------+--------+--------+
35 | @int_1 | @int_2 | @int_3 |
36 +--------+--------+--------+
37 | 1 | NULL | 8 |
38 +--------+--------+--------+
39 1 ROW IN SET (0.00 sec)
40
41 mysql>
42