- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7章_数据库编程技术
7.2.3 实验内容 请完成以下实验内容: (1) 创建游标,逐行显示Customer表的记录,并用WHILE结构来测试@@Fetch_Status的返回值。输出格式如下: 客户编号+-----+客户名称+----+客户住址+-----+客户电话+------+邮政编码 (2) 利用游标修改OrderMaster表中orderSum的值。 (3) 创建游标,要求:输出所有女业务员的编号、姓名、性别、所属部门、职务、雇佣日期、薪水。 (4) 创建存储过程,要求:按表定义中的CHECK约束自动产生员工编号。 (5) 创建存储过程,要求:查找姓“李”的职员的员工编号、订单编号、订单金额。 (6) 创建存储过程,要求:统计每个业务员的总销售业绩,显示业绩最好的前3位业务员的销售信息。 * 7.2.3 实验内容 (7) 创建存储过程,要求将大客户(销售数量位于前5名的客户)中热销的前3种商品的销售信息按如下格式输出 * (8) 创建存储过程,要求:输入年度,计算每个业务员的年终奖金。年终奖金=年销售总额×提成率。提成率规则如下:年销售总额5000元以下部分,提成率为10%,超过5000元部分,则提成率为15%。 7.2.3 实验内容 * (9) 创建存储过程,要求将OrderMaster表中每一个订单所对应的明细数据信息按规定格式输出,格式如下。 7.2.3 实验内容 (10) 请使用游标和循环语句创建存储过程proSearchCustomer,根据客户编号查找该客户的名称、住址、总订单金额以及所有与该客户有关的商品销售信息,并按商品分组输出,输出格式如下。 * 7.3 实验十三:触发器 7.3.1 实验目的与要求 (1) 掌握触发器的创建和使用方法。 (2) 掌握游标和触发器的综合应用方法。 * 7.3 实验十三:触发器 [例7.10] 删除触发器:编写一个允许用户一次只删除一条记录的触发器。 CREATE TRIGGER Tr_Emp ON Employee FOR DELETE AS /*对表Employee定义一个删除触发器*/ ? DECLARE @row_cnt int /*变量@row_cnt,用于跟踪Deleted表中记录的个数*/ ? SELECT @Row_Cnt=Count(*) FROM Deleted If @row_cnt1 /*判断Deleted表中记录的个数是否大于1*/ ? BEGIN ? PRINT ‘此删除操作可能会删除多条人事表数据!!! ? ROLLBACK TRANSACTION /*如果Deleted表中记录的个数大于1,事务回滚*/ ? END 分析:本例中,触发器约束了用户只能对Employee表一次删除一条记录。我们可以验证触发器的作用效果。 * [例7.10] 验证过程如下: (1) DELETE FROM Employee WHERE sex=女 在(1)执行后,结果可能出现二种情况: ① 系统提示:“外键约束冲突”错误。 ② 系统提示:“此删除操作可能会删除多条人事表数据!!!”。 第①种情况,是由于Employee表与其它表建立了外键约束关系,在删除表中元组时必须满足参照完整性约束的要求。只有删除外键约束,在执行删除操作时才能激活触发器。 第②中情况,是由于解除了外键约束后,删除操作激活触发器,但由于删除的元组多于一个,所以出现正确系统提示信息。 为了与(1)进行比较,请仔细做下面的验证: (2) DELETE FROM Employee WHERE emp_no=在(2)执行后,结果可能出现二种情况: ① 系统提示:“外键约束冲突”错误。 ② 能删除一个员工信息。 * [例7.11] 更新触发器:请使用游标和循环语句为OrderDetail表建立一个更新触发器updateorderdetail,要求当用户修改定单明细表中某个商品的数量或单价时自动修改定单主表中的订单金额。 * CREATE TRIGGER updatesaleitem ON OrderDetail FOR UPDATE AS /*对表Employee定义一个更新触发器*/ /*判断对指定列quantity或 price 的更新*/ If UPDATE(quantity) OR UPDATE(price) BEGIN /*定义两个内存变量用于跟踪游标中订单编号和商品编号的值*/ DECLARE @orderno int, @productno c
文档评论(0)