文档介绍:实验报告姓名: 叶磊学号: 1 任务概述(任务说明) 一、存储过程使用相应 SQL 语句,完成如下操作: 1. 新建一存储过程 proc1, 显示指定用户 ID 的订单信息列表(订单号、成交时间、订单总金额、订单状态及所有订单的平均金额) ,并成交时间降序排列。 2. 新建一存储过程 proc2, 通过输入订单号、书目 ID 及数量, 实现给该订单增加商品、更新订单总金额,并返回当前订单包含的商品总数(商品类别数量)。 3. 新建一存储过程 proc3 , 通过修改指定订单、指定商品的价格, 并返回该订单的新总金额及优惠金额。 4. 新建一存储过程 proc4 ,统计各订单总金额的分布情况。订单金额划分情况如下: 0-50 元、 51-100 元、 101-150 元、 151-200 元和 201 元以上。 5. 新建一存储过程 proc5 ,实现查询购买过指定书目 ID 的用户还同时购买过的购买次数最多的前 3 名书目名称及购买次数,并按照购买次数排序。 6. 新建一存储过程 proc6 ,实现查询与指定用户 ID 购买过相同商品的用户及购买过相同商品的数量,并按照相同商品数量降序排列。二、触发器 1. 创建一触发器 tg1 ,当往 orderbook 表中增加记录时,实现商品库存相应减少;当修改 orderbook 表中相应商品数量时,实现商品数量相应变动。 2. 创建一触发器 tg2 , 当往 orderbook 中增加记录时, 如果商品库存量少于 10, 则不允许购买该商品,并给出相应提示。新建图书订购情况统计表 bookstas ( 包含图书编号、图书名称、图书类别、图书价格和订购册数,数据类型自定) ,并根据数据库的订单情况将社科类图书的订购情况插入表中。创建一触发器 tg3 , 当往 orderbook 表中增加记录时, 自动更新 bookstas 表相应图书的统计信息 4 源码,文档化--- 新建一存储过程 proc1, 显示指定用户 ID 的订单信息列表--- (订单号、成交时间、订单总金额、订单状态及所有订单的平均金额) ,并成交时间降序排列。 create procedure proc1 ***@user_id varchar ( 20) as select oid , ordertime , payment , orderstate , avgpayment , sumpayment from "order" , orderstate ,( select avg ( payment ) avgpayment from "order" where "user" = ***@user_id )a, ( select sum ( payment ) sumpayment from "order" where "user" = ***@user_id )b where "order" . state = orderstate . osid and "user" = ***@user_id order by ordertime desc go exec proc1 102 --- 新建一存储过程 proc2, 通过输入订单号、书目 ID 及数量, --- 实现给该订单增加商品、更新订单总金额, 并返回当前订单包含的商品总数( 商品类别数量)。 create procedure proc2 ( ***@order_id varchar ( 20 ), ***@book_d varchar ( 20 ), ***@book_s varchar ( 20)) as update "order" set payment = payment + price from book , "order" where oid in( select orderid from orderbook where bookid = ***@book_d ) and bid = ***@book_d update orderbook set quantity = quantity + ***@book_s where orderid = ***@order_id select bookid from orderbook where orderid = ***@order_id go exec proc2 2014001 , 1001 ,4 --- 新建一存储过程 proc3 ,通过修改指定订单、指定商品的价格,并返回该订单的新总金额及优惠金额。 create procedure proc3 ***@order_id varchar ( 20 ), ***@book_id varchar ( 20 ), ***@s_price varchar ( 20) as update "order" set payment = payment