mysql 存储过程

存储过程

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

转载于:https://www.cnblogs.com/binxyz/p/7451310.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值