From 0997f3003f442bc9ab72b3e9d9915539858c5f48 Mon Sep 17 00:00:00 2001 From: CTGU-HW <1499086342@qq.com> Date: Thu, 2 Jul 2020 18:03:25 +0800 Subject: [PATCH] first commit --- P.sql | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 P.sql diff --git a/P.sql b/P.sql new file mode 100644 index 0000000..b891fc4 --- /dev/null +++ b/P.sql @@ -0,0 +1,76 @@ +drop PROCEDURE if EXISTS details; +CREATE PROCEDURE details(in uNum varchar(8)) +READS SQL DATA +BEGIN + select users.userNo 会员编号, users.name 姓名, users.level 会员等级, book.bookNo 图书编号, + book.bookName 图书名称, year(orders.orderTime) 购买年份, orderdetails.Onumber 数量, book.price + from users,orders,orderdetails,book + where users.userNo = uNum + and orders.userNo = uNum + and orderdetails.userNo = uNum + and orderdetails.bookNo = book.bookNo; +END; + +call details("0000001"); + +drop PROCEDURE if EXISTS createOrder; +CREATE PROCEDURE createOrder(in uNum varchar(8)) +READS SQL DATA +BEGIN + declare bookMoney float(5); + declare sNo varchar(8); + declare oNo varchar(8); + declare oST varchar(20); + declare P_OrderNo varchar(50); + declare dST varchar(10); + declare bn varchar(20); + declare nm int;declare i int; + DECLARE done INT DEFAULT 0;##创建结束标志变量 + DECLARE cur cursor + for select bookNo,num,id + FROM shoppingcart WHERE userNo = uNum;##创建游标 + DECLARE CONTINUE HANDLER FOR NOT found SET done = 1;##定义游标结束时的返回值 + + set @oST='未处理'; + SET @dST='未配送'; +-- 将会员号和时间拼接起来作为订单号 + SELECT CONCAT(uNum,NOW()) into P_OrderNo; +-- 统计此次购买金额存到bookMoney + select sum(num * price) into bookMoney from shoppingcart where userNo = uNum; +-- 查询此次的购物车编号存到sNo + select distinct(scartNo) into sNo from shoppingcart where userNo = uNum; +-- Begin Tran + insert into orders (userNo, orderTime, sumMoney, scartNo,orderStatus,orderNo) + value(uNum, now(), bookMoney, sNo,@oST,P_OrderNo); + insert into distributionlist (orderNo, userNo, deliveryStatus) + value(P_OrderNo, uNum, '未完成配送'); + select last_insert_id() into oNo; +-- Commit Tran +-- 购书明细信息写入订单明细表中 + open cur; ##打开游标 + read_loop:loop + fetch cur into bn,nm,i; + if done = 1 then + leave read_loop;##跳出循环 + end if; + insert into orderdetails (orderNo, deliveryStatus, bookNo, userNo,Onumber) + value(P_OrderNo, '未配送', bn, uNum,nm); + end loop; + close cur; + DELETE FROM shoppingcart WHERE userNo = uNum; + SELECT * FROM orderdetails; + SELECT * from shoppingcart; +END; + +call createOrder("0000001"); + + + +drop PROCEDURE if EXISTS pressSales; +CREATE PROCEDURE pressSales() +BEGIN + select press 出版社, sum(Onumber) 销售总数量 from orderdetails, book + where orderdetails.bookNo = book.bookNo group by orderdetails.bookNo order by sum(Onumber); +END; + +call pressSales();