存储过程
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