- 1、本文档共27页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第14章 函数创建和管理
第14章 用户自定义函数与事务 ; 函数是接受参数、执行操作(例如复杂计算)并将操作结果以值的形式返回的例程。返回值可以是单个标量值或结果集。SQL Server 2005中有多种函数,根据返回值的类型和是否由系统提供,分为标量函数、表值函数和内置函数。SQL Server 2005支持3种用户定义函数:标量函数、表值函数和聚合函数。本章介绍用户定义函数的创建、修改及删除。;14.1 用户自定义函数简介 ;
用户自定义函数有以下3种类型:
返回单值的标量函数;
类似于视图的可更新内嵌表值函数;
使用代码创建结果集的多语句表值函数。;14.2.1 标量函数
14.2.2 内嵌表值函数
14.2.3 多语句表值函数; 标量函数类似于系统内置函数。函数的输入参数可以是所有标量数据类型,输出参数的类型可以是除了text、nText、image、cursor、timestamp以外的任何数据类型,函数主体在BEGIN-END块中定义。;标量函数;创建一个用户定义标量函数fsum,其功能为求两个整数的和。
CREATE FUNCTION dbo.fsum (@num1 INT, @num2 INT = 6) --参数@num2默认值为6
RETURNS INT --函数返回值为整数类型
AS
BEGIN
RETURN @num1 + @num2 --返回值表达式
END
GO
SELECT dbo.fsum (2,8)
SELECT dbo.fsum (7, default)
执行结果如下:
---------------------------
10
13;下面的用户定义标量函数可以根据学生的学号查询学生的出生日期,由此计算出并返回学生的年龄值。
--参数@sid为学生学号,@year为当前年份
CREATE FUNCTION dbo.fage(@sid char(10),@year INT = 2004)
RETURNS INT --函数返回值为整数类型
AS
BEGIN
DECLARE @birdate DATETIME
SELECT @birdate = stu_birthdate FROM Student WHERE stu_id = @sid
RETURN @year - YEAR(@birdate) --返回值表达式
END
GO
SELECT dbo.fage(0901001,2004)
SELECT dbo.fage(0901002, default)
执行结果如下:
---------------------------
26
24;查看定义:
select * from sys.sql_modules
或
select definition from sys.sql_modules
where object_id=OBJECT_ID(‘fsum’)
;例14-1;;调用标量函数;14.2.2 内嵌表值函数;创建内嵌表值函数;调用内嵌表值函数;使用参数;;与视图相比,在函数中可以通过为预编译的SQL SELECT语句传递补贴的参数对返回的结果集进行限制,如下:
创建一个自定义函数。
CREATE FUNCTION dbo.fstu2(@classid char(10) = null)
RETURNS Table
AS
RETURN (
SELECT Stu_id, Stu_name, Stu_classid FROM Student
WHERE stu_classid = @classid OR @classid IS NULL)
如果使用default关键字来调用该函数,就会返回对应班级的学生信息:
SELECT * FROM dbo.fstu2(DEFAULT)
执行结果如下:
Stu_id Stu_name Stu_classid
--------------------------------------------
0901001 张三 09计一
0901002 李四 09计二
;如果通过输入参数传递了班级代码,函数内预编译的SELECT语句就会返回对应班级的学生信息。
SELECT * FROM dbo.fstu2(09计一)
执行结果如下:
Stu_id Stu_name Stu_classid
--------------------------------------------
0901001 张三 09计一 ;例14.4;14.2.3 多语句表值函数 ;创建多语句表值函数;创
您可能关注的文档
- 牛津九上英语U4 Grammar.ppt
- 物理:3.5《力分解》(新人教版必修1).ppt
- 重定向_查找_kill_第一个shell脚本.docx
- WORD 长篇排版技巧.doc
- 玻璃钢管道技术特点与在我国应用现状分析.doc
- 理论力学02平面力系简化和平衡.ppt
- 用AJAX编写用户注册时应用实例.doc
- 用NO$GBA玩NDS游戏使用教程.doc
- 理论力学第七版第十一章.ppt
- 用PV操作实现进程同步示例.ppt
- 从“追竞”到“追星”:电子竞技粉丝的偶像消费与免费劳动.pdf
- 经销商车后用户研究报告:洞察车主变化制胜售后未来.pdf
- 企业竞争图谱:2024年100%HPP红心苹果汁头豹词条报告系列.pdf
- 南亚地区区域动态-9月第2期:拉胡尔·甘地在美演讲引争议.pdf
- 2024年1-9月全国房地产企业拿地TOP100排行榜.pdf
- 中国多肽药物行业市场规模测算逻辑模型头豹词条报告系列.pdf
- CBI-中国钢铁行业脱碳融资:技术、政策和金融工具.pdf
- 团餐:激烈的市场竞争格局下,团餐行业未来将向多元化、定制化发展头豹词条报告系列.pdf
- 璀璨电商珠宝界:全球市场趋势分析与高端消费洞察头豹词条报告系列.pdf
- 中国城市技术创新月报:义乌市.pdf
文档评论(0)