createprocedure proc_displaygoods
@categoryvarchar(100)asselect G.GoodsNO 商品编号,G.GoodsName 商品名,G.SalePrice 售价,G.InPrice 进价,G.Number 数量,C.CategoryNO 类别编号,C.CategoryName 类别
from Goods G
join Category C on G.CategoryNO = C.CategoryNO
where CategoryName like@categoryexecute dbo.proc_displaygoods '饼干'
(2)创建一个有输入输出参数的存储过程,用于查询指定商品名的售价。并执行该存储过程。
createprocedure proc_findsale
@goodsnamevarchar(100),@pricedecimal(18,2) output
asselect@price=SalePrice from Goods where GoodsName =@goodsname
go
declare@goodsnamevarchar(100),@pricedecimal(18,2)set@goodsname='好吃点'execute dbo.proc_findsale @goodsname,@price output
select@goodsname 商品名,@price 售价
go
createtrigger tri_updateSaleBill
on SaleBill
afterinsertasbegindeclare@numberint,@goodsnovarchar(10)select@number= Number,@goodsno= GoodsNO from inserted
if(select Number from Goods where GoodsNO =@goodsno)<@numberbeginprint'库存不足'rollbackendelsebeginupdate Goods set Number = Number -@numberwhere GoodsNO =@goodsnoif(select Number from Goods where GoodsNO =@goodsno)<10beginprint'该商品数量小于10,低于安全库存量,请及时进货'endendendCREATETRIGGER update_goods_number
ON salebill
AFTERINSERTASBEGINSET NOCOUNT ON;declare@salenumberintdeclare@storenumberintdeclare@goodsnovarchar(30)select@salenumber=number,@goodsno=goodsno from inserted
select@storenumber=number from goods where goodsno=@goodsnoif@storenumber<@salenumberbeginprint'库存数量不足'rollbackendelsebeginupdate goods set number=number-@salenumberwhere goodsno=@goodsnoselect@storenumber=number from goods where goodsno=@goodsnoif@storenumber<10print'该商品数量小于10,低于安全库存量,请及时进货'endEND--添加一条记录,用于验证insertinto supermarket.dbo.SaleBill values('GN0020','S01','2018-06-09 00:00:00',3);