存储过程

 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     

 

posted @ 2017-11-19 17:15  千彧  阅读(189)  评论(0编辑  收藏  举报