多语句表值函数

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

多语句表值函数

定义

多语句表值函数也称为多声明表值型函数,可以看作标量型和内联表值型函数的结合体。

它的返回值是一个表,但它和标量型函数一样有一个用BEGIN-END 语句括起来的函数体,返回值的表中的数据是由函数体中的语句插入的。

可以进行多次查询,对数据进行多次筛选与合并弥补了内嵌表值型函数的不足。语法

创建语法如下:

CREATE FUNCTION [ owner_name.] function_name

( [ { @parameter_name [AS] scalar_parameter_data_type [ = default ] } [ ,...n ] ] ) RETURNS @return_variable TABLE < table_type_definition >

[ WITH < function_option > [ [,] ...n ] ]

[ AS ]

BEGIN

function_body

RETURN

END

< function_option > ::=

{ ENCRYPTION | SCHEMABINDING }

< table_type_definition > ::=

( { column_definition | table_constraint } [ ,...n ] )

COMPUTE [BY]子句的介绍

COMPUTE [BY] 子句用于SELECT查询中,既可查看结果明细,也可查看汇总信息。

COMPUTE 所生成的汇总值在查询结果中显示为单独的结果集。当 COMPUTE 带有可选的 BY 子句时,符合 SELECT 条件的每个组都有两个结果集:

∙每个组的第一个结果集是明细行集,其中包含该组的选择列表信息。

∙每个组的第二个结果集有一行,其中包含该组的 COMPUTE 子句中所指定的聚合函数的小计。

当 COMPUTE 不带可选的 BY 子句时,SELECT 语句有两个结果集:

∙每个组的第一个结果集是包含选择列表信息的所有明细行。

∙第二个结果集有一行,其中包含 COMPUTE 子句中所指定的聚合函数的合计。

举例:查询所有清华大学出版社出版书籍的记录,并统计购买这些书籍的总价格。SELECT*

FROM图书明细表

WHERE出版社='清华大学出版社'

ORDER BY定价desc

COMPUTE SUM(定价)

例题:

设有图书管理数据库,包含三张表:

图书明细表(图书编号,图书类别,图书名称,作者,出版社,出版日期,定价)

读者表(借书证号,姓名,系别,办证日期)

借出信息表(借出编号,借书证号,图书编号,借出日期)

完成下列操作:

1. 列出计算机类图书的书号、名称及价格,最后求出册数和总价格。

2.定义一个多语句表值函数,用于查询学生借书情况,只需提供参数:借书证号,就可以通过调用函数返回此学生的借书情况,若有借书籍,则返回所借书籍的编号、书籍名称、定价和借书日期;若没有在借书籍,则返回记录为空。

CREATE FUNCTION jsqk(@jszh char(20))

RETURNS @jsqkb TABLE

(书籍编号char(20),

书籍名称char(50),

定价float,

借书日期datetime)

AS

BEGIN

INSERT @jsqkb

SELECT图书明细表.图书编号,图书名称,定价,借书日期

FROM 读者表,借出信息表,图书明细表

WHERE 读者表.借书证号=借出信息表.借书证号AND 借出信息表.图书编号=图书明细表.图书编号AND读者表.借书证号=@jszh RETURN

END

GO

相关文档
最新文档