(整理)《数据库原理及应用》实验指导书 联系客服

发布时间 : 星期日 文章(整理)《数据库原理及应用》实验指导书更新完毕开始阅读9bdad865951ea76e58fafab069dc5022aaea4691

精品文档

(in_ReaderID in char, in_ISBN in char, in_BookID in char, out_str out char) IS

Ct_Reader Ct_ISBN

Number(10); Number(10);

Ct_MaxReader Number(10); Ct_Store Number(10); Ct_HaveRead Ct_BookID

Number(10); Number(10);

Error_Numer Number(10); no_result BEGIN

Error_Numer:= 0; out_str:='';

SELECT count(*) into Ct_Reader FROM XS WHERE 借书证号=in_ReaderID; IF Ct_Reader < 1 THEN BEGIN

out_str:= '该读者不存在'; Error_Numer:= 1; END; END IF;

SELECT count(*) into Ct_ISBN FROM BOOK WHERE ISBN=in_ISBN; IF Ct_ISBN < 1 THEN BEGIN

out_str:= '该图书不存在'; Error_Numer:= 1; END; END IF;

SELECT 借书量 into Ct_MaxReader FROM XS WHERE 借书证号=in_ReaderID;

精品文档

Exception;

精品文档

IF Ct_MaxReader>5 THEN BEGIN

out_str:= '读者借书量不能大于5'; Error_Numer:= 1; END; END IF;

SELECT 库存量 into Ct_Store FROM BOOK WHERE ISBN=in_ISBN; IF Ct_Store =0 THEN BEGIN

out_str:= '图书库存量为0'; Error_Numer:= 1; END; END IF;

SELECT count(*) into Ct_HaveRead FROM JY WHERE 借书证号=in_ReaderID and ISBN = in_ISBN; IF Ct_HaveRead > 0 THen BEGIN

out_str:= '读者已经借过该书'; Error_Numer:= 1; END; END IF;

SELECT count(*) into Ct_BookID FROM JY WHERE 索书号=in_BookID; IF Ct_BookID > 0 THEN BEGIN

out_str:= '索书号已存在'; Error_Numer:= 1; END; END IF;

精品文档

精品文档

IF Error_Numer = 0 THEN

INSERT INTO JY VALUES(in_ReaderID, in_ISBN, in_BookID, sysdate); UPDATE XS SET 借书量=借书量+1 WHERE 借书证号=in_ReaderID ; UPDATE BOOK SET 库存量=库存量-1 WHERE ISBN=in_ISBN; out_str:= '借书成功'; IF SQL%NOTFOUND THEN RAISE no_result; END IF; COMMIT;

dbms_output.put_line(out_str); ELSE

dbms_output.put_line(out_str); END IF; EXCEPTION

WHEN no_result THEN

DBMS_OUTPUT.PUT_LINE('执行过程中遇到错误!'); DBMS_OUTPUT.PUT_LINE(out_str); ROLLBACK; WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE(SQLCODE||'---'||SQLERRM); END; ? 功能测试

创建完存储过程Book_Borrow后可以使用PL/SQL语句验证图书借阅是否能够实现:

SELECT 借书证号, 借书量 FROM XS WHERE 借书证号= '10000001'; /*查询10000001读者的原借书量*/ SELECT ISBN, 库存量 FROM BOOK WHERE ISBN='7-115-10162-0' ; /*查询图书的原库存量*/

DECLARE out_str char(30);

精品文档

精品文档

begin

Book_Borrow('10000001', '7-115-10162-0', '5100000007',out_str); end;

/*执行存储过程,实现图书借阅*/

SELECT 借书证号, 借书量 FROM XS WHERE 借书证号= '10000001'; /*查询10000001号读者的现有借书量*/

SELECT ISBN, 库存量 FROM BOOK WHERE ISBN='7-115-10162-0' ; /*查询图书的现有库存量*/

精品文档

精品文档

实验四 数据库系统的安全性管理

实验目的:掌握账户的建立,数据库用户权限的分配与回收

实验要求:使用Oracle 11g实现账户的建立,数据库用户权限的分配与回收 实验条件:计算机,Oracle 11g 实验内容:

1、为阿里巴巴酒店数据库创建以下用户:

用户名:张敏,王林,李新,王立,王铭,张天 密码:自行设定

2、作为DBA的你,现在要负责给不同的数据库用户授予不同的权限,各用户可以执行的操作如下:

(1) 张敏和王林有权查询酒店客户的个人信息。 (2) 李新负责更新酒店客户的个人信息。

(3) 王立有权查询各种类型的客房号及所属的类型和定价。 (4) 王铭负责更新各类型客房的定价。

(5) 张天不仅可以查询航空公司的名称和电话信息,他还有权查询机票信

息。

(6) 李新有权更新雇员的信息。 试用GRANT语句实现上述要求。

3、由于工作调动,需要收回张天和李新的权限,试用REVOKE语句实现。 4、

精品文档