资源描述:
《数据库原理 实验四 存储过程与触发器、函数》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、2012级计算机专业集美大学计算机工程学院2013~2014年第一学期《数据库原理》实验报告题目:实验四存储过程与触发器、函数学号:成绩班级:计算12日期:2014.05姓名:指导老师:林颖贤一、实验目的:1、掌握创建存储过程的方法和步骤;2、掌握创建触发器的方法和步骤;3、掌握用户自定义函数的类型及使用方法。二、实验使用环境:Windows7x64、SQLServer2005三、实验内容与完成情况:1、增加一张库存表Inventoy,包括:商品编号、价格、库存数量、入库时间(默认值为系统时间)。createtableInventory(Goo_nochar(8)n
2、otnull,Inv_numintnull,Inv_datedatetimenotnull,primarykey(Goo_no,Inv_date));ALTERTABLEInventoryADDCONSTRAINTInv_datedefaultgetdate()forInv_date;select*fromInventory2、从Purchase(进货表)和Sell(销售表)中备份空记录表:PurchaseBak和Sell1Bak。if(notexists(selectnamefromsysobjectswherename='PurchaseBak'))(selec
3、t*intoPurchaseBakfromPurchasewhere(1=0))if(notexists(selectnamefromsysobjectswherename='SellBak'))(select*intoSellBakfromSellwhere(1=0))2012级计算机专业集美大学计算机工程学院2013~2014年第一学期3、创建一个触发器。向进货表中插入一条记录时,这个触发器都将更新库存表。如果库存有该类商品时,那么该商品的进价即为两次进价的平均值(因为每次的进价可能会不相同),库存量为原有库存加该次进货数量;(算法为:(库存商品进价*库存量+进
4、货价*进货量)/(库存量+进货量);如果没有该商品,则插入到库存表中。createtriggertri_PurchaseonPurchaseforinsertasbegindeclare@Pur_pricesmoney,@Pur_numint,@Goo_nochar(8),@Inv_numint,@Inv_pricesmoneyselect@Goo_no=Goo_no,@Pur_num=Pur_num,@Pur_prices=Pur_pricesfrominsertedif(@Goo_noin(selectGoo_nofromInventory))beginsele
5、ct@Inv_prices=Inv_prices,@Inv_num=Inv_numfromInventorywhere(@Goo_no=Goo_no)updateInventorysetInv_prices=(@Inv_prices*@Inv_num+@Pur_prices*@Pur_num)/(@Inv_num+@Pur_num),Inv_num=(@Inv_num+@Pur_num),Inv_date=getdate()where(Goo_no=@Goo_no)endelseinsertintoInventory(Goo_no,Inv_prices,Inv_nu
6、m,Inv_date)values(@Goo_no,@Pur_prices,@Pur_num,getdate())endinsertintoPurchase(Pur_no,Pur_prices,Pur_num,Pur_date,Goo_no,Emp_no)values(106,3600,20,'2014-5-19','JY000001',1001)select*fromInventoryinsertintoPurchase(Pur_no,Pur_prices,Pur_num,Pur_date,Goo_no,Emp_no)values(106,3200,50,'201
7、4-5-22','JY000001',1001)select*fromInventory4、创建一个触发器。向销售表中插入一条记录时,这个触发器将更新库存表。库存量为原有库存量减去销售数量。如果库存数量少于10,则显示”该商品库存数量少于10,请及时进货”;如果库存不足,则显示:“‘库存不足’”。2012级计算机专业集美大学计算机工程学院2013~2014年第一学期createtriggertri_SellonSellforInsertasbegindeclare@Sell_numint,@Inv_numint,@Goo_nochar(8)select@Sell