ERP课程 实验作业3 业务逻辑存储封装方法

造福系列

ERP课程 实验作业

实验3 业务逻辑的存储过程封装方法

一、实验目的
综合应用前两次的实验结果,利用存储过程封装业务逻辑,体现理解数据与程序相分离的思想,使学生深刻理解该思想的实现方法和好处,为下个综合实验的进行做好准备。
二、实验环境(描述实验的软件、硬件环境)

  1. 高性能计算机1台

  2. 数据库系统

  3. 高级开发语言
    三、 实验说明

  4. 报表功能是ERP系统中非常重要的一个部分,对比高级程序语言,利用存储过程实现报表具有事半功倍的效果,表1为订单主表,企业的管理层根据该表可以做成多种用于决策的报表。
    表1 订单主表orderMaster
    订单编号 OrderNo Char(12)
    客户号 customerNo Char(9)
    业务员编号 SaleNo Char(8)
    订单金额 Ordersum Numeric
    订货日期 Orderdate Datetime
    出货日期 Shipdate Datetime
    发票号码 InvoiceNo Char(10)

  5. 考虑企业管理的多变性和个性化,在设计与实现ERP系统时,数据与程序的分离非常重要,在利用存储过程和高级编程语言实现报表时,要求高级编程语言中不应出现和实际业务相关的内容,而采用存储过程来封装业务逻辑。
    四、实验内容

  6. 为了体现每一个销售类别对销售总额的贡献,需实现一个报表:将全部的销售额根据金额大小分类,分类区间为500元。类别为0-499.99,500-999.99 … 以此类推,格式如下:
    表2 销售区间贡献表
    范围下限 销售金额 所占比重(%)
    0 2300.00 10
    500.00 5200.00 23
    1000.00 5600.00 34
    … … …

  7. 编写存储过程实现上述报表。

  8. 通过实验1所用高级程序语言调用上述存储过程,并在相应的数据控件显示报表结果。

  9. 现需增加新的报表内容,给出各种范围金额的排名,如表3所示。
    表3 销售区间贡献表2
    范围下限 销售金额 所占比重(%) 排名
    0 2300.00 10 3
    500.00 5200.00 23 2
    1000.00 5600.00 34 1
    … … … …
    实验步骤

创建订单表
create table orderMaster
(
OrderNo Char(12),
CustomerNo Char(9),
SaleNo Char(8),
Ordersum Numeric,
Orderdate datetime,
Shipdate datetime,
InvoiceNo Char(10)
)

插入数据
insert into orderMaster values(‘001’,‘001’,‘07’,1400,‘2012-9-16’,‘2012-9-20’,‘005’),
(‘002’,‘005’,‘01’,400,‘2012-9-16’,‘2012-9-20’,‘004’),
(‘003’,‘003’,‘03’,1000,‘2012-9-23’,‘2012-9-30’,‘001’),
(‘004’,‘002’,‘04’,200,‘2012-9-18’,‘2012-9-20’,‘003’),
(‘005’,‘004’,‘07’,2000,‘2012-9-19’,‘2012-9-22’,‘007’),
(‘006’,‘001’,‘06’,1700,‘2012-10-16’,‘2012-10-20’,‘006’),
(‘007’,‘002’,‘05’,1700,‘2012-11-16’,‘2012-11-20’,‘002’),
(‘008’,‘001’,‘06’,2100,‘2012-10-17’,‘2012-10-20’,‘006’)

创建储存过程
create procedure sale
as
begin
declare @top numeric
set @top=(select MAX(Ordersum) from orderMaster)
declare @rangeBottom numeric
set @rangeBottom=0
declare @sum numeric
set @sum=0
declare @amount numeric
set @amount=(select SUM(Ordersum) from orderMaster)
declare @sort table(range numeric,saleSum numeric,percentNumber numeric(12,4))
while(@rangeBottom<@top)
begin
set @rangeBottom=@rangeBottom+500
set @sum=(select SUM(Ordersum) from orderMaster where Ordersum<=@rangeBottom and Ordersum>@rangeBottom-500)
if @sum=NULL
begin
set @sum=0
end
insert into @sort values(@rangeBottom,@sum,@sum/@amount100)
end
select range-500 as ‘范围下限’ ,
saleSum as ‘销售金额’,
percentNumber as’所占比重(%)',
(select count(
)+1 from @sort b where a.saleSum < b.saleSum) as ‘排名’
from @sort a
end

调用sale

exec sale

实验结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值