本题涉及的数据 库关系模式如下:+ readers(readerid, mame, sex, department, phone). books(bookid, bname, author, press, price)» lending(readerid, bookid. borrowdate, returndate)+ 其中,readers 表示读者,它的各属性依次为读者编号,读者姓 名、读者性别、读者所在部门和读者电话;books 表示图书,它的各属性依次为图书编号、图书名、作者、出版社和定价;lending 表示借阅,它的各 属性依次为读者编号,图书编号、借出时间和归还时间。+创建存储过程 u.proC,查询指定图书被借的次数,结果通过应用程序的变量显示《输入 参数用 bid 表示,輸出参数用 bimes 表示)。
时间: 2024-02-23 09:02:58 浏览: 27
好的,根据您提供的数据库关系模式,可以创建以下存储过程 u.proC:
```
CREATE PROCEDURE u.proC
@bid INT,
@bimes INT OUTPUT
AS
BEGIN
SELECT @bimes = COUNT(*)
FROM lending
WHERE bookid = @bid
END
```
这个存储过程接收一个输入参数 `@bid` 表示要查询的图书编号,同时也有一个输出参数 `@bimes` 表示查询结果,即被借阅的次数。该存储过程会在 lending 表中查找与输入图书编号匹配的记录,统计它们的数量并将结果赋值给输出参数 `@bimes`。
在应用程序中调用该存储过程并获取 `@bimes` 参数的值即可显示查询结果。
相关问题
SELECT rname FROM borrow,reader WHERE borrow.bookid = '100001' AND borrow.readerid NOT IN (SELECT readerid FROM borrow WHERE bookid = '100002')这样对吗
这是一个 SQL 查询语句,其目的是查询借阅了书籍 '100001' 但没有借阅过书籍 '100002' 的读者的姓名。语句的基本逻辑是正确的,但是缺少对表的连接条件,应该将 borrow 表和 reader 表连接起来。可以通过 borrow 表中的 readerid 和 reader 表中的 readerid 进行连接。修改后的语句如下:
SELECT rname FROM borrow, reader WHERE borrow.readerid = reader.readerid AND borrow.bookid = '100001' AND borrow.readerid NOT IN (SELECT readerid FROM borrow WHERE bookid = '100002')
create trigger Book_return_Stock after update on Borrow for each row begin IF NEWselect.ReturnTime IS NOT NULL THEN UPDATE book SET Stock = Stock + 1 where BookID = New.BookID; end if; end; UPDATE Borrow SET ReturnTime = '2023-06-09' WHERE BookID = '1002' AND ReaderID = '20230101';
这个SQL语句包括了创建触发器和执行更新语句两部分。在这里需要注意的是,语句中的NEWselect是一个错误的别名,应该是NEW。正确的触发器代码如下:
```
CREATE TRIGGER Book_return_Stock AFTER UPDATE ON Borrow
FOR EACH ROW
BEGIN
IF NEW.ReturnTime IS NOT NULL THEN
UPDATE book SET Stock = Stock + 1 WHERE BookID = NEW.BookID;
END IF;
END;
```
这个触发器的作用是,当Borrow表的某一行更新后,判断是否已经归还(即ReturnTime是否为NULL),如果已经归还,则将相应图书库存加1。注意,这个触发器中的book表和Borrow表必须存在,并且book表中必须有一个Stock字段。
接下来的UPDATE语句是用来测试这个触发器的,它将Borrow表中BookID为1002、ReaderID为20230101的借阅记录的归还时间设置为2023年6月9日。执行这个UPDATE语句后,如果触发器设置正确,那么book表中相应图书的库存应该会加1。