找回密码
 注册
搜索
查看: 6289|回复: 0

存储过程例子

[复制链接]
发表于 2005-6-1 17:05:26 | 显示全部楼层 |阅读模式
CREATE proc 还书
@barcode char(7)
as
if(select count(*) from borrow where barcode=@barcode and getdate()>returntime)=1
  begin
  declare @读者编号 char(7)
  declare @读者姓名 varchar(10)
  declare @条形码 char(7)
  declare @图书名称 varchar(20)
  declare @借出日期 smalldatetime
  declare @应还日期 smalldatetime
  declare @实还日期 datetime
  declare @超期天数 int
  declare @罚款金额 money

  set @读者编号=(select  readerinfo.readerid   from readerinfo,borrow,bookinfo  where borrow.barcode=bookinfo.barcode and borrow.readerid=readerinfo.readerid and borrow.barcode=@barcode)
  set @读者姓名=(select  readerinfo.name  from readerinfo,borrow,bookinfo  where borrow.barcode=bookinfo.barcode and borrow.readerid=readerinfo.readerid and borrow.barcode=@barcode)
  set @条形码=(select bookinfo.barcode  from readerinfo,borrow,bookinfo  where borrow.barcode=bookinfo.barcode and borrow.readerid=readerinfo.readerid and borrow.barcode=@barcode)
  set @图书名称=(select bookinfo.name  from readerinfo,borrow,bookinfo  where borrow.barcode=bookinfo.barcode and borrow.readerid=readerinfo.readerid and borrow.barcode=@barcode)
  set @借出日期=(select  borrow.loantime from readerinfo,borrow,bookinfo  where borrow.barcode=bookinfo.barcode and borrow.readerid=readerinfo.readerid and borrow.barcode=@barcode)
  set @应还日期=(select  borrow.returntime from readerinfo,borrow,bookinfo  where borrow.barcode=bookinfo.barcode and borrow.readerid=readerinfo.readerid and borrow.barcode=@barcode)
  set @实还日期=(select  getdate())
  set @超期天数=(select  datediff(day,borrow.returntime,getdate()) from readerinfo,borrow,bookinfo  where borrow.barcode=bookinfo.barcode and borrow.readerid=readerinfo.readerid and borrow.barcode=@barcode)
  set @罚款金额=(select  datediff(day,borrow.returntime,getdate())*0.2  from readerinfo,borrow,bookinfo  where borrow.barcode=bookinfo.barcode and borrow.readerid=readerinfo.readerid and borrow.barcode=@barcode)


  select  readerinfo.readerid as 读者编号,readerinfo.name as 读者姓名, bookinfo.barcode as 条形码,bookinfo.name as 图书名称,borrow.loantime as 借出日期,borrow.returntime as 应还日期,getdate() as 实还日期,datediff(day,borrow.returntime,getdate()) as 超期天数,datediff(day,borrow.returntime,getdate())*0.2 as 罚款金额
  from readerinfo,borrow,bookinfo
  where borrow.barcode=bookinfo.barcode and borrow.readerid=readerinfo.readerid and borrow.barcode=@barcode
  

  
  
  update bookstate
  set state='可借'
  where barcode=@barcode

  update cardinfo
  set penalty=penalty+(select datediff(day,borrow.returntime,getdate())*0.2   from readerinfo,borrow,bookinfo where borrow.barcode=bookinfo.barcode and borrow.readerid=readerinfo.readerid and borrow.barcode=@barcode)
  where readerid=(select readerinfo.readerid from readerinfo,borrow,bookinfo where borrow.barcode=bookinfo.barcode and borrow.readerid=readerinfo.readerid and borrow.barcode=@barcode)

  insert into penalty_book
  values(@读者编号,@读者姓名,@条形码,@图书名称,@借出日期,@应还日期,@实还日期, @超期天数,@罚款金额)
  
  delete from borrow
  where barcode=@barcode
  
  
  end
else
  begin
  select readerinfo.readerid as 读者编号,readerinfo.name as 读者姓名, bookinfo.barcode as 条形码,bookinfo.name as 图书名称,borrow.loantime as 借出日期,borrow.returntime as 应还日期,getdate() as 实还日期,0 as 超期天数,0 as 罚款金额
  from readerinfo,borrow,bookinfo
  where borrow.barcode=bookinfo.barcode and borrow.readerid=readerinfo.readerid and borrow.barcode=@barcode

  update bookstate
  set state='可借'
  where barcode=@barcode

  delete from borrow
  where barcode=@barcode
end
GO
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|宁德市腾云网络科技有限公司 ( 闽ICP备2022007940号-5|闽公网安备 35092202000206号 )

GMT+8, 2025-5-4 23:28 , Processed in 0.013894 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表