【正文】
USE bookmg GO CREATE PROCEDURE return_insert @elem1 varchar(9), @elem2 varchar(9), @elem3 smallint AS INSERT INTO 還書(shū) (readerid,bookid,booknum) values 22 ( @elem1, @elem2, @elem3 ) BEGIN UPDATE 還書(shū) SET inputdate=GETDATE() WHERE readerid=@elem1。 UPDATE 圖書(shū) SET noborrow=noborrow+@elem3 WHERE bookid=@elem2。 UPDATE 圖書(shū) SET haveborrow=haveborrow@elem3 WHERE bookid=@elem2。 UPDATE 讀者 SET borrownum=borrownum@elem3 SELECT 39。還書(shū)成功 39。 END GO /***********還書(shū)實(shí)例 *************/ USE bookmg GO EXEC return_insert 39。11100713139。,39。54054190339。,1 GO /**************************創(chuàng)建借書(shū)存儲(chǔ) *****************/ USE bookmg GO CREATE PROCEDURE borrow_insert @elem1 varchar(9), @elem2 varchar(9), @elem3 smallint AS insert into 借書(shū) ( readerid,bookid,booknum ) values ( @elem1, @elem2, @elem3 ) BEGIN 23 /*這里用了 判定是否超期函數(shù) judgedate, 將返回值賦予 判斷變量 judgement*/ DECLARE @judgement int SET @judgement= (SELECT max(overdays) FROM judgedate(@elem1)) /*判定 該讀者是否有 圖書(shū)超期 */ IF (@judgement=0) BEGIN SELECT 39。借書(shū)成功 39。 UPDATE 借書(shū) SET outputdate=GETDATE() WHERE readerid=@elem1 AND bookid=@elem2。 UPDATE 借書(shū) SET shoulddate=DATEADD(day,30,getdate()) WHERE readerid=@elem1 AND bookid=@elem2。 /*聲明一個(gè)變量 bookname從圖書(shū)表里讀取圖書(shū)名到借書(shū)表里 */ DECLARE @bookname varchar(40) SET @bookname=(SELECT bookname FROM 圖書(shū) WHERE bookid=@elem2 ) UPDATE 借書(shū) SET bookname=@bookname WHERE readerid=@elem1 AND bookid=@elem2。 UPDATE 圖書(shū) SET noborrow=noborrow@elem3 WHERE bookid=@elem2。 UPDATE 圖書(shū) SET haveborrow=haveborrow+@elem3 WHERE bookid=@elem2。 UPDATE 讀者 SET borrownum=borrownum+@elem3 WHERE readerid=@elem1。 END ELSE BEGIN SELECT 39。借書(shū)失敗,有超期未還圖書(shū) 39。 END END /************判斷是否超期表值函數(shù) ********************/ USE bookmg GO CREATE FUNCTION judgedate(@elem1 as varchar(9)) RETURNS @overdate TABLE 24 ( overdays int ) AS BEGIN INSERT @overdate SELECT day(GETDATE()ISNULL(shoulddate,0)) FROM 借書(shū) WHERE readerid=@elem1 RETURN END /*借書(shū)實(shí)例 */ USE bookmg GO EXEC borrow_insert 39。11100713139。,39。54054190339。,2 GO /*****************圖書(shū)分類查詢和分類統(tǒng)計(jì) **************/ USE bookmg GO CREATE PROCEDURE type_select @booktype varchar(20) AS BEGIN SELECT booktype FROM 圖書(shū) WHERE booktype=@booktype。 DECLARE @booknum int SET @booknum=( select sum(noborrow+haveborrow) FROM 圖書(shū) WHERE booktype=@booktype ) SELECT @booktype AS 39。類型 39。 ,@booknum AS 39。本 39。 END /****圖書(shū)分類查詢實(shí)例 *********/ USE bookmg GO EXEC type_select 39。漫畫 39。 GO /*******************圖書(shū)按書(shū)名查詢和統(tǒng)計(jì) ******************/ USE bookmg GO CREATE PROCEDURE bookname_select 25 @bookname varchar(40) AS BEGIN SELECT * FROM 圖書(shū) WHERE bookname=@bookname。 DECLARE @booknum int SET @booknum=( select sum(noborrow+haveborrow) FROM 圖書(shū) WHERE bookname=@bookname ) SELECT @bookname AS 39。書(shū)名 39。 ,@booknum AS 39。本 39。 END /****圖書(shū)書(shū)名查詢實(shí)例 *********/ USE bookmg GO EXEC bookname_select 39。子不語(yǔ)壹 39。 GO /**********************按作者查詢和統(tǒng)計(jì) **************************/ USE bookmg GO CREATE PROCEDURE bookauthor_select @bookauthor varchar(20) AS BEGIN SELECT * FROM 圖書(shū) WHERE bookauthor=@bookauthor。 DECLARE @booknum int SET @booknum=( select sum(noborrow+haveborrow) FROM 圖書(shū) WHERE bookauthor=@bookauthor ) SELECT @bookauthor AS 39。作者 39。 ,@booknum AS 39。本 39。 END /***圖書(shū)作者查詢實(shí)例 ******/ USE bookmg GO EXEC bookauthor_select 39。夏達(dá) 39。 GO