存储过程

 *存储过程是sql语句和控制语句的预编译集合,以一个名称存储并作为一个单元处理

存储过程优点

1.增强sql语句的灵活性
2.实现较快的执行速度 第一次和一般一样,第二次不用语法分析,编译,直接从内存执行
3.减少网络流量 客户端通过http请求发sql字节多,只需调用存储过程名字,和要操作的id,如删除操作

创建存储过程

in表示该参数的值必须在调用存储过程时指定,在存储过程中,不能返回

out表示该参数的值可以被存储过程改变,并可以返回

inout表示该参数的值必须在调用存储过程时指定,可以被改变,返回

简单的存储过程

create procedure sp1() select version();
call sp1; //调用存储过程

IN 存储过程 id = id 会将表里的数据全部删除,in里的参数不能与字段起名一样

create procedure removeUserId(in id int unsigned)
begin
delete from tdb_goods_cates where id = id;
end
call removeUserId(3)

IN OUT 删除一行,返回剩余行数

delimiter $;
create procedure removebrandAndReturnNums(in p_id int unsigned, out nums int unsigned)
begin
delete from tdb_goods_brands where p_id = brand_id;
select count(brand_id) from tdb_goods_brands into nums;
end
delimiter ;
call removebrandAndReturnNums(4,@nums);

select @nums       //用户变量

三个参数 存储过程

delimiter $
create procedure removeGoodsAndReturn(in p_brand smallint unsigned,out deleteGoods smallint unsigned,out goodsCount smallint unsigned)
begin 
delete from tdb_goods where brand_id = p_brand;
select row_count() into deleteGoods;
select count(goods_id) from tdb_goods into goodsCount;
end
delimiter ;

call removeGoodsAndReturn(7,@a,@b);
 
select @a;
posted on 2017-08-30 07:44  冰域  阅读(151)  评论(0)    收藏  举报