【正文】
GOinsert book(ISBN,Bname,Author,Pub,Price,Copnum,Invnum,Summary)values(39。,39。,39。,39。,33,10,10,null)GOinsert book(ISBN,Bname,Author,Pub,Price,Copnum,Invnum,Summary)values(39。,39。,39。,39。,35,8,8,null)GOinsert book(ISBN,Bname,Author,Pub,Price,Copnum,Invnum,Summary)values(39。,39。,39。,39。,26,10,10,null)GOinsert book(ISBN,Bname,Author,Pub,Price,Copnum,Invnum,Summary)values(39。,39。,39。,39。,59,4,4,null)/*BookID_ISBN*/insert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)》》》GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GO》》》insert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GO》》》insert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GO》》》insert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GO》》》insert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GO》》》insert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GO》》》insert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GO》》》insert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GO》》》insert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GOinsert BookID_ISBN(ISBN,BookID)values(39。,39。)GO/* MBook203 中創(chuàng)建讀者加密的借書(shū)存儲(chǔ)過(guò)程,當(dāng)向 Lend 表插入一條記錄時(shí), ①檢查該記錄的借書(shū)證號(hào) ReaderID 在 Reader 表中是否存在, ②檢查該記錄的圖書(shū) ISBN 號(hào)是否在 Book 表中是否存在, ③檢查該記錄的圖書(shū)庫(kù)存量 Invnum 是否 等于 0 ④檢查該記錄是否借閱過(guò) 該圖書(shū) ⑤檢查該記錄的 圖書(shū) BookID 是否在 借閱表 Lend 中已經(jīng)存在 若有一項(xiàng)為否,則不允許插入,并回滾事務(wù); 否則,插入記錄,并將 讀者表中該讀者借閱數(shù)量 加1 ,圖書(shū)表中庫(kù)存量 減1 ,并返回借書(shū)成功信息*/USE MBook203GOIF EXISTS(SELECT name FROM WHERE name = 39。)DROP PROC Book_Borrow GOCREATE PROCEDURE Book_Borrow in_ReaderID char(12),in_ISBN varchar(16), in_BookID varchar(10),out_str char(30) OUTPUTWITH ENCRYPTIONASBEGIN IF NOT EXISTS(SELECT * FROM Reader WHERE ReaderID = in_ReaderID) BEGIN SET out_str = 39。 RETURN 0 END IF NOT EXISTS(SELECT * FROM Book WHERE ISBN = in_ISBN) BEGIN SET out_str = 39。 RETURN 0 END IF EXISTS(SELECT * FROM Lend WHERE BookID = in_BookID) BEGIN SET out_str = 39。 RETURN 0 END IF (SELECT Invnum FROM Book WHERE ISBN = in_ISBN) = 0 BEGIN SET out_str = 39。 RETURN 0 END IF in_ISBN IN (SELECT ISBN FROM Lend WHERE ReaderID = in_ReaderID) BEGIN SET out_str = 39。 RETURN 0 END BEGIN TRAN /* 開(kāi)始一個(gè)事務(wù) */ INSERT INTO Lend VALUES(in_ReaderID,in_ISBN,in_BookID,GETDATE()) IF ERROR 0 /* 如果前面一條 SQL 語(yǔ)句出錯(cuò)則回滾事務(wù)并返回 */ BEGIN ROLLBACK TRAN SET out_str = 39。 RETURN 0 END /* 更新讀者借書(shū)數(shù)量 */ UPDATE Reader SET Num = Num + 1 WHERE ReaderID = in_ReaderID IF ERROR 0 BEGIN ROLLBACK TRAN SET out_str = 39。 RETURN 0 END /* 更新圖書(shū)庫(kù)存量 */ UPDATE Book SET Invnum = Invnum 1 WHERE ISBN = in_ISBN IF ERROR = 0 /* 如果所有語(yǔ)句都不出錯(cuò),則提交事務(wù)并返回 */ BEGIN COMMIT TRAN SET out_str = 39。 RETURN 1 END ELSE /* 如果執(zhí)行出錯(cuò),則回滾事務(wù)并返回 */ BEGIN ROLLBACK TRAN SET out_str = 39。 RETURN 0 ENDEND/* MBook203 中創(chuàng)建讀者加密的還書(shū)存儲(chǔ)過(guò)程,當(dāng)刪除 Lend 表中一條記錄時(shí): ①檢查借閱表中是否存在該借閱記錄,如果不存在則回滾事務(wù) ②將該記錄插入到歷史借閱表 ③將該記錄的還書(shū)日期 rbbt 獲取當(dāng)前系統(tǒng)時(shí)間,并插入到對(duì)應(yīng)記錄的還書(shū)日期字段 ④將該記錄的讀者借閱數(shù)量 加1 ⑤檢查該記的圖書(shū)庫(kù)存量 加1 ⑥返回還書(shū)成功信息 若有一項(xiàng)為執(zhí)行不成功,則不允許刪除,并回滾事務(wù) */USE MBook203GOIF EXISTS(SELECT name FROM WHERE name = 39。)DROP PROC Book_ReturnGOCREATE PROCEDURE Book_Return in_ReaderID char(12),in_ISBN varchar(16),in_BookID varchar(10), out_str char(30) OUTPUT WITH ENCRYPTIONASBEGIN IF NOT EXISTS(SELECT * FROM Lend WHERE ReaderID = in_ReaderID AND ISBN = in_ISBN AND BookID = in_BookID ) BEGIN SET out_str = 39。 RETURN 0 END BEGIN TRAN /* 開(kāi)始一個(gè)事務(wù) */ DECLARE bbt date SELECT bbt = (SELECT bbt FROM Lend WHERE ReaderID = in_ReaderID AND ISBN = in_ISBN AND BookID = in_BookID ) /* 將還書(shū)記錄插入到歷史借閱表 */ INSERT INTO HistoryLend VALUES(in_ReaderID,in_ISBN,in_BookID,bbt,GETDATE()) IF ERROR 0 /* 如果前面一條 SQL 語(yǔ)句出錯(cuò)則回滾事務(wù)并返回 */ BEGIN ROLLBACK TRAN SET out_str = 39。 RETURN 0 END /* 刪除借閱表中的借書(shū)記錄 */ DELETE FROM Lend WHERE ReaderID = in_ReaderID AND ISBN = i