mysql创建存储过程

坑一:

MySQL创建存储过程中,存储过程的输入参数变量命名不应该与字段名相同。如果相同,导致的结果就是参数的值将不会是你传入的值,而是变成每条记录的那个字段的值。如果在删除操作时,将会删除整张表的记录,是非常危险的。

#删除存储过程
drop procedure if exists pro_test;
#创建存储过程
DELIMITER //
create procedure pro_test(IN c_age INTEGER)
begin
select * FROM ur_test_z WHERE age = c_age;
end//

DELIMITER ;

注:如果该存储过程定义如下:

#删除存储过程
drop procedure if exists pro_test;
#创建存储过程
DELIMITER //
create procedure pro_test(IN age INTEGER)
begin
select * FROM ur_test_z WHERE age = age;
end//

DELIMITER ;

查询结果为整张表的记录。

即使写成这样也不行,查询结果仍会是整张表的记录

#删除存储过程
drop procedure if exists pro_test;
#创建存储过程
DELIMITER //
create procedure pro_test(IN age INTEGER)
begin
DECLARE var_age INT;
SET var_age = age;
select * FROM ur_test_z WHERE age = var_age;
end//
DELIMITER ;


阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页