欢迎来到天天文库
浏览记录
ID:14346207
大小:245.00 KB
页数:7页
时间:2018-07-28
《实验十存储过程和触发器答案》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验报告实验十三存储过程和触发器实验目的通过该实验加深存储过程和触发器的基本概念的理解,掌握基本存储过程、触发器的管理和执行,为后面的系统开发打好基础。实验内容与要求实验(1)存储过程创建与使用创建一个存储过程,执行该存储过程完成如下功能:查询示例数据库AdventureWorks中的订单基本信息表Sales.SalesOrderHeader、客房基本信息表Sales.Customer和订单明细表Sales.SalesOrderDetail,输出订单编号(SalesOrderID)、订单日期(OrderDate)、发货日期(ShipDate)、客户名称(
2、CustomerID为客户编号)和订单的总价,并将输出结果写到一个新建的表中。其中,订单的总价是由订单明细表中的各项产品的单价(UnitPrice)相加得到的,即每个订单的总价=SUM(产品数量(OderQty)*产品单价(UnitPrice))。存储过程需要创建输出结果的表,如果输出结果表已经存在则需要在创建之前将其删除。实验(2)触发器的创建与测试创建一个触发器,完成如下功能:检查插入到订单明细表Sales.SalesOrderDetail中的信息,如果插入的记录中的订单编号在订单基本信息表中不存在,则提示“首先要在订单基本信息表Sales.Sale
3、sOrderHeader中插入订单XXXX(订单编号),该插入操作被取消”并撤消插入操作,否则,判断所插入的记录中的产品编号(ProductID)是否在订单明细表中存在,如果存在则将输入的产品数量与原有的数量相加,并使用插入记录中的产品单价更新原有的价格,否则,插入新的记录。实验步骤实验(1)存储过程创建与使用(1)判断是否已经存在test存储过程,如有将其删除。由图可知在AdventureWorks下,可编程性---存储过程下,无test存储过程。-7-实验报告(2)创建存储过程,查询查询示例数据库AdventureWorks中的订单基本信息表Sale
4、s.SalesOrderHeader、客房基本信息表Sales.Customer和订单明细表Sales.SalesOrderDetail,输出订单编号(SalesOrderID)、订单日期(OrderDate)、发货日期(ShipDate)、客户名称(CustomerID为客户编号)和订单的总价,并将输出结果写到一个新建的表newtable中。由图也可知,在存储过程下,可找到新建的存储过程dbo.test。(3)执行创建的存储过程test,结果如下:-7-实验报告(4)此后用select语句进行newtable表的查询,由图可知所要求的几项都已输出在表n
5、ewtable中。结果分析:存储过程能够将这一段代码预置在数据库中,这样用户可直接通过简单的语句来调用这部分程序,增强了安全性和实用性。-7-实验报告实验(2)出发器的创建与测试(1)创建基于Sales.SalesOrderDetail的触发器,且为INSTEADOF型的。声明参数SalesOrderID。(2)按照如下要求:检查插入到订单明细表Sales.SalesOrderDetail中的信息,如果插入的记录中的订单编号在订单基本信息表Sales.SalesOrderHeader中不存在,则提示“首先要在订单基本信息表Sales.SalesOrder
6、Header中插入订单XXXX(订单编号),该插入操作被取消”并撤消插入操作。(3)否则,判断所插入的记录中的产品编号(ProductID)是否在订单明细表中存在,如果存在则将输入的产品数量与原有的数量相加,并使用插入记录中的产品单价更新原有的价格。(4)否则,插入新的记录。-7-实验报告(1)整体运行得到结果,并在数据库—AdventureWorks—表—Sales.SalesOrderDetail---触发器,可看到新建的触发器triggerSOD已存在。(2)进行不同实例的测试1)当订单不存在时,出现以下信息。2)当有订单但相应的产品在订单中没有时
7、,执行下列语句,显示“一行受影响”-7-实验报告,再用select语句查询Sales.SalesOrderDetail中订单SalesOrderID为75123的订单明细,可以看到新的产品ProductID=707被插入到订单明细表SalesOrderDetail中。3)当订单中已有该产品ProductID=712,订单SalesOrderID=75123时,再插入该产品,显示“1行受影响”,用select语句进行查询,和上图对比可知,OrderQty由原来的1,变为3,增加了2;UnitPrice由原来的8.99变为8.50。-7-实验报告为更加明显的
8、显示结果,插入上俩步刚插入的已有产品ProductID=707,订单SalesO
此文档下载收益归作者所有