好文档 - 专业文书写作范文服务资料分享网站

仓储管理系统设计说明书(数据库).doc

天下 分享 时间: 加入收藏 我要投稿 点赞

数据库系统设计与实习 2010年9月

五.入库数量与仓位数转化的函数设计

功能要求:将入库的货物按照入库的数量转换成所要占据的仓位数的功能。

入口参数:入库数量 单位:吨 返回:仓位数 单位:个 仓位数的转换算法:

仓位数=ceiling(入库数量/仓位数)

脚本:

AmountConvert.sql

create function AmountConvert(@inputamount int ,@wamount int) --@inputmount:入库数量 --@wamount :仓位数 returns int As begin

return (ceiling(@inputamount/10)) end

test.sql

select Good.Gname,dbo.AmountConvert(Intoamount,Wamount) Input.Intoamount

from Good ,Input ,Warehouse

1

仓位数,

数据库系统设计与实习 2010年9月

六.存储过程

1.随机查看任意号码仓库的仓库信息,使用输入参数,创建一个存储过程

源程序:

Pro_2.test use cc go

create procedure pro_2 @wno char(2) as

select a.Wno ,a.Gno ,a.Gname,c.Oname,b.Gamount,b.Gstyle,b.Gprice,b.Gunite from Warehouse a,Good b,Owner c

where a.Gno=b.Gno and b.Oname=c.Oname and a.Gname=b.Gname and a.Wno=@wno

test1.sql

execute pro_2 'AA'

1

数据库系统设计与实习 2010年9月

七. 触发器

1.实现修改现存货物数量的触发器

实现功能:当货物出库时,在货物表中的剩余货物数量可以自动修改。

t.sql

alter table Good add Rest int null

the_rest.sql

create trigger the_rest on Outt

for insert,update,delete as

declare @therest int

declare @Gno char(6),@Gname varchar(10)

--declare insert_cursor cursor for select Gno ,Gname from inserted declare delete_cursor cursor for select Gno ,Gname from deleted begin

open delete_cursor

fetch next from delete_cursor into @Gno,@Gname while @@fetch_status=0 begin

set @therest=(select Good.Gamount-Outt.Oamount from Good,Outt

where Good.Gno=Outt.Gno and Outt.Gno=@Gno and Good.Gname=@Gname ) update Good set Rest=@therest where Gname=@Gname and Gno=@Gno fetch next from delete_cursor into @Gno,@Gname end

close delete_cursor deallocate delete_cursor

/*if update(Oamount) begin

open insert_cursor

fetch next from insert_cursor into @Gno,@Gname while @@fetch_status=0 begin

set @therest=(select Good.Gamount-Outt.Oamount from Good,Outt

1

数据库系统设计与实习 2010年9月

where Good.Gno=Outt.Gno and Outt.Gno=@Gno and Good.Gname=@Gname ) print str(@therest)+'delete'+'mmm'+@Gno+@Gname

update Good set Rest =@therest where Gno=@Gno and Gname=@Gname fetch next from insert_cursor into @Gno,@Gname end

close insert_cursor deallocate insert_cuosor end */ end

execute1.sql

update Outt set Oamount =70

where Wno='CC' and Gno='CC2000' and Gname='钢铁'

execute2.sql

update Outt set Oamount =70

where Wno='AA' and Gno='AA1000' and Gname='水泥'

2. 不准修改的货主姓名的触发器

T2.sql

/*不准修改的货主姓名的触发器*/ create trigger [修改货主姓名] on Good for update as

if update(Oname) begin

rollback transaction

raiserror('不能修改货主姓名',16,10) end

test2.sql

update Good set Oname='王五'

where Gno='AA1000' and Gname='水泥'

1

数据库系统设计与实习 2010年9月

附录A:

设计所用结构表

1.Warehouse 仓库 说明 仓库号 货物号 货物名 仓库名 仓位数 面积 负责人编号 负责人姓名 字段名称 Wno Gno Gname Wname Wamount Warea Rno Rname 数据类型 Char(2) Char(6) Varchar(10) Varchar(16) int 约束 P F F 备注 Numeric(3,1) Varchar(8) Varchar(8) 2.Goods货物 说明 货物号 字段名称 Gno Gname Checker Oname Gamount Gstyle Gunite 数据类型 Char(6) Varchar(10) Varchar(8) Varchar(8) Int 约束 P P F F 备注 前2位为仓库号,后4位物品编号 货物名 审核人 货主姓名 货物数量 货物类型 单位 Varchar(20) Char(1) 1

8ydri5k9xn83hrt8bf1m52amw9lhy700853
领取福利

微信扫码领取福利

微信扫码分享