孙娟111033Word格式文档下载.docx
《孙娟111033Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《孙娟111033Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。
2.建立和执行存储过程
3.存储过程的维护和管理
4.存储过程中参数的使用
二、实验环境(本次上机实践所使用的硬件和相关软件。
硬件:
PC机:
CPU双核1.6G;
内存:
不小于512MB;
D盘剩余空间不小于10G;
E盘剩余空间不小于10G;
软件:
Windows2003操作系统,VmwareWorkstation9安装原程序和sqlserver2005deviso文件。
三、实验内容及实验步骤(上机实践内容:
如程序设计、图形图像制作、网页设计、数据库操作、计算机组装与维护等)等;
用实验步骤或算法表示法、流程图等形式表达算法设计思想与算法实现步骤)
实验内容:
一、存储过程的创建
在library数据库中,创建一个返回图书类别信息的存储过程getbookcategory
(用createprocerduce命令和SSMS创建)
二、执行上述存储过程
三、查看上述存储过程
四、修改和删除上述存储过程
五、带参数的存储过程
(1)使用输入参数
根据读者编号,查询读者的当前借书的记录
(2)使用输出参数
根据读者的编号,查询读者的到期的图书个数
(3)通过return返回值
根据指定的图书编号,查找是否借出,并将其值返回
六、创建借书存储过程borrowbook(p215)
七、创建还书存储过程returnbook(p216)
四、操作过程及实验结果
详细记录在操作过程中出现的问题及解决方法。
记录实验的结果(或截图,以供教师审阅。
)。
一.
二.
三.
四.
(1)
(2)
五.
(1)
(3).
六.
七.
五、总结
这次实训我学会了执存储过程,储过程的维护和管理,储过程中参数的使用。
六、附录(命令)
uselibrary
go
createproceduregetbookcategory
as
select类编号,类名称
frombookcategory
二.
executegetbookcategory
sp_helpgetbookcategory
alterprocgetbookcategory
orderby类编号
dropprocgetbookcategory
createprocborrowinfo
@readeridint
selectborrow.图书编号,books.图书名,borrow.借阅日期,borrow.应还日期
fromborrowinnerjoin
booksonborrow.读者编号=books.图书编号
whereborrow.读者编号=@readerid
(2).
createprocgetoverdatenum
@readeridint,@booknumintoutput
select@booknum=count(*)
fromborrow
where读者编号=@readerid
anddatediff(day,应还日期,getdate())>
createprocisborrowed
@bookidint
declare@bookstatebit
select@bookstate=是否借出
frombooks
where图书编号=@bookid
return@bookstate
--调用存储过程并获得返回值:
declare@isborrowedbit
exec@isborrowed=isborrowed1
if@isborrowed=0
print'
未借出'
else
已借出'
CREATEPROCBorrowBook
@BookIDint,@ReaderIDint
AS
DECLARE@BorrowNumint,@BorrowDureNumint,@BorrowDureDaysint
--根据读者编号,查出该读者当前借书的数量
SELECT@BorrowNum=COUNT(*)FROMBorrow
WHERE读者编号=@ReaderID
--根据读者编号,得到该读者能借的图书数量和借书期限
SELECT@BorrowDureNum=借书数量,@BorrowDureDays=借书期限
FROMReaderCategory,Readers
WHEREReaderCategory.种类编号=Readers.种类编号ANDReaders.读者编号=@ReaderID
--若书已借出,不能借
IF(SELECT是否借出FROMBooksWHERE图书编号=@BookID)=1
BEGIN
PRINT'
图书已借出,不能借'
RETURN1
END
--若超过借书数量,不能借
IF@BorrowNum>
=@BorrowDureNum
图书数量已满,不能再借'
RETURN2
--若有过期图书,不能借
IFEXISTS(SELECT*FROMBorrowWHEREDATEDIFF(day,应还日期,GETDATE())>
AND读者编号=@ReaderID)
有过期未还图书,不能借'
RETURN3
--保存借书信息
INSERTINTOBorrow
VALUES(@BookID,@ReaderID,GETDATE(),DATEADD(day,@borrowduredays,GETDATE()))
IF@@ERROR=0
图书借阅成功'
RETURN0
ELSE
图书借阅失败!
'
RETURN4
createprocreturnbook
@bookidint,@readeridint,@returndatedatetime,@finemoney=null,@memotext=null
--查找有无该借书记录,若不存在,返回
declare@borrowdatedatetime,@duedatedatetime
ifnotexists(select*fromborrowwhere图书编号=@bookidand读者编号=@readerid)
begin
无此借书记录'
return1
end
select@borrowdate=借阅日期,@duedate=应还日期
fromborrow
where图书编号=@bookidand读者编号=@readerid
--开始事务
begintransaction
--在数据表borrowhistory中保存还书信息
insertintoborrowhistory(图书编号,读者编号,借出日期,应还日期,还书日期,支付罚金,备注)
values(@bookid,@readerid,@borrowdate,@duedate,@returndate,@fine,@memo)
if@@error<
>
rollbacktran
print'
还书失败'
return1
end
--将该借书记录从借书表borrow中删除
deletefromborrow
where图书编号=@bookidand读者编号=@readerid
begin
committran
借书成功'
return0