设有图书管理数据库,包含三张表: 图书明细表(图书编号,图书类别,图书名称,作者,出版社,出版日期,定价);读者表(借书证号,姓名,系别,办证日期) ;借出信息表(借出编号,借书证...
图书明细表(图书编号,图书类别,图书名称,作者,出版社,出版日期,定价);
读者表(借书证号,姓名,系别,办证日期) ;
借出信息表(借出编号,借书证号,图书编号,借书日期);
完成下列操作:(10分)
定义一个多语句表值函数,用于查询学生借书情况,只需提供参数:借书证号,就可以通过调用函数返回此学生的借书情况,若有借书籍,则返回所借书籍的编号、书籍名称、定价和借书日期;若没有在借书籍,则返回记录为空。设函数名为:f_BorrowBook(@jszh char(20))。
参考解析: 【参考答案】
CREATE FUNCTION BorrowBook (@jszh char(20))
RETURNS @jsqkb TABLE (书籍编号 char(20), 书籍名称 char(50), 定价 float, 借书日期 datetime)
AS
BEGIN
INSERT @jsqkb
SELECT 图书明细表.图书编号,图书名称,定价,借出信息表.借书日期
FROM 借出信息表,图书明细表
WHERE 借出信息表.图书编号=图书明细表.图书编号 AND 借出信息表.借书证号=@jszh <mailto:AND借出信息表.借书证号=@jszh>
RETURN
END
【解题思路】
SQL Server 2008多语句表值函数的格式为:
CREATE FUNCTION [ schema_name.] function_name
( [ { @parameter_name [AS] [type_schema_name.]parameter_data_type
[ = default ] }
[ ,...n ]
]
)
RETURNS @return_variable TABLE < table_type_definition >
[ AS ]
BEGIN
function_body
RETURN
END
[;]
< table_type_definition > ::=
( {<column_definition ><column_constraint>|<computed_column_definition>}
[ table_constraint] [ ,...n ] )
采用三表联合查询,通过传入的借书证号查出借出信息表中的图书编号,然后查出图书明细表的信息。