- 1、本文档共101页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章 T-SQL语言 数据库实用教程
(1)内嵌表值函数的定义。语法格式如下: CREATE FUNCTION [ schema_name. ] function_name /*定义函数名部分*/ ( [ { @parameter_name?[ AS ] [ type_schema_name. ]?parameter_data_type [ = default ] } [ ,...n ]?]) /*定义参数部分*/ RETURNS TABLE /*返回值为表类型*/ [ WITH function_option [ ,...n ] ] /*定义函数的可选项*/ [ AS ] RETURN [ ( ] select_stmt [ ) ] /*通过SELECT语句返回内嵌表*/ [ ; ] RETURNS子句仅包含关键字TABLE,表示此函数返回一个表。内嵌表值函数的函数体仅有一个RETURN语句,并通过参数select-stmt指定的SELECT语句返回内嵌表值。语法格式中的其他参数项与标量函数的定义类似。 【例5.37】 对于PXSCJ数据库,为了让学生查询其各科成绩及学分,可以利用XSB、KCB、CJB三个表创建视图。程序如下: ?CREATE VIEW ST_VIEW AS SELECT dbo.XSB.学号, dbo.XSB.姓名, dbo.KCB.课程名, dbo.CJB.成绩 FROM dbo.KCB INNER JOIN dbo.CJB ON dbo.KCB.课程号 = dbo.CJB.课程号 INNER JOIN dbo.XSB ON dbo.CJB.学号 = dbo.XSB.学号 然后在此基础上定义如下内嵌函数: CREATE FUNCTION st_score(@student_ID char(6)) RETURNS table AS RETURN ( SELECT * FROM PXSCJ.dbo.ST_VIEW WHERE dbo. ST_VIEW.学号= @student_ID ) (2)内嵌表值函数的调用。内嵌表值函数只能通过SELECT语句调用,内嵌表值函数调用时,可以仅使用函数名。 在此,以前面定义的st_score()内嵌表值函数的调用作为应用举例,学生通过输入学号调用内嵌函数查询其成绩。 【例5.38】 调用st_score()函数,查询学号为081101的学生的各科成绩及学分。 SELECT * FROM PXSCJ.[dbo].st_score(081101) 执行结果如下: 3.多语句表值函数 (1)多语句表值函数定义。 语法格式: CREATE FUNCTION [ schema_name. ] function_name /*定义函数名部分*/ ( [ { @parameter_name?[ AS ] [ type_schema_name. ]?parameter_data_type [ = default ] }?[ ,...n ]?]) /*定义函数参数部分*/ RETURNS @return_variable TABLE table_type_definition /*定义作为返回值的表*/ [ WITH function_option [ ,...n ] ] /*定义函数的可选项*/ [ AS ] BEGIN function_body /*定义函数体*/ RETURN END [ ; ] 其中, table_type_definition:: = /*定义表,参考第3章*/ ( { column_definition column_constraint } [ table_constraint ] [ ,...n ] ) 【例5.39】 在PXSCJ数据库中创建返回表的函数,通过以学号作为实参调用该函数,可显示该学生各门功课的成绩和学分。 CREATE FUNCTION score_table(@id char(6)) RETURNS @score TABLE ( xs_ID char(6), xs_Name char(8), kc_Name char(16), cj tinyint, xf tinyint ) AS BEGIN INSERT @score SELECT S.学号, S.姓名
文档评论(0)