孙娟111033.docx

上传人:b****5 文档编号:4675840 上传时间:2022-12-07 格式:DOCX 页数:12 大小:636.69KB
下载 相关 举报
孙娟111033.docx_第1页
第1页 / 共12页
孙娟111033.docx_第2页
第2页 / 共12页
孙娟111033.docx_第3页
第3页 / 共12页
孙娟111033.docx_第4页
第4页 / 共12页
孙娟111033.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

孙娟111033.docx

《孙娟111033.docx》由会员分享,可在线阅读,更多相关《孙娟111033.docx(12页珍藏版)》请在冰豆网上搜索。

孙娟111033.docx

孙娟111033

安庆职业技术学院电子信息系

实验报告(SQLServer)

姓名:

孙娟学号:

1110332013

实验序号:

第9次

实验名称:

存储过程

实验日期:

2013.10.21

实验成绩:

87

一、实验目的及要求(本次上机实践所涉及并要求掌握的知识点。

1.了解存储过程的概念

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)

(2)

(3).

六.

七.

 

五、总结

这次实训我学会了执存储过程,储过程的维护和管理,储过程中参数的使用。

六、附录(命令)

一.

uselibrary

go

createproceduregetbookcategory

as

select类编号,类名称

frombookcategory

二.

uselibrary

go

executegetbookcategory

三.

uselibrary

go

sp_helpgetbookcategory

四.

(1)

uselibrary

go

alterprocgetbookcategory

as

select类编号,类名称

frombookcategory

orderby类编号

go

(2)

uselibrary

go

dropprocgetbookcategory

go

五.

(1)

createprocborrowinfo

@readeridint

as

selectborrow.图书编号,books.图书名,borrow.借阅日期,borrow.应还日期

fromborrowinnerjoin

booksonborrow.读者编号=books.图书编号

whereborrow.读者编号=@readerid

(2).

createprocgetoverdatenum

@readeridint,@booknumintoutput

as

select@booknum=count(*)

fromborrow

where读者编号=@readerid

anddatediff(day,应还日期,getdate())>0

(3).

createprocisborrowed

@bookidint

as

declare@bookstatebit

select@bookstate=是否借出

frombooks

where图书编号=@bookid

return@bookstate

--调用存储过程并获得返回值:

declare@isborrowedbit

exec@isborrowed=isborrowed1

if@isborrowed=0

print'未借出'

else

print'已借出'

六.

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

BEGIN

PRINT'图书数量已满,不能再借'

RETURN2

END

--若有过期图书,不能借

IFEXISTS(SELECT*FROMBorrowWHEREDATEDIFF(day,应还日期,GETDATE())>0

AND读者编号=@ReaderID)

BEGIN

PRINT'有过期未还图书,不能借'

RETURN3

END

--保存借书信息

INSERTINTOBorrow

VALUES(@BookID,@ReaderID,GETDATE(),DATEADD(day,@borrowduredays,GETDATE()))

IF@@ERROR=0

BEGIN

PRINT'图书借阅成功'

RETURN0

END

ELSE

BEGIN

PRINT'图书借阅失败!

'

RETURN4

END

七.

createprocreturnbook

@bookidint,@readeridint,@returndatedatetime,@finemoney=null,@memotext=null

as

--查找有无该借书记录,若不存在,返回

declare@borrowdatedatetime,@duedatedatetime

ifnotexists(select*fromborrowwhere图书编号=@bookidand读者编号=@readerid)

begin

print'无此借书记录'

return1

end

select@borrowdate=借阅日期,@duedate=应还日期

fromborrow

where图书编号=@bookidand读者编号=@readerid

--开始事务

begintransaction

--在数据表borrowhistory中保存还书信息

insertintoborrowhistory(图书编号,读者编号,借出日期,应还日期,还书日期,支付罚金,备注)

values(@bookid,@readerid,@borrowdate,@duedate,@returndate,@fine,@memo)

if@@error<>0

begin

rollbacktran

print'还书失败'

return1

end

--将该借书记录从借书表borrow中删除

deletefromborrow

where图书编号=@bookidand读者编号=@readerid

if@@error<>0

begin

rollbacktran

print'还书失败'

return1

end

committran

print'借书成功'

return0

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1