- 0
- 0
- 约3.74千字
- 约 27页
- 2021-12-11 发布于广东
- 举报
第一页,共27页 函数是接受参数、执行操作(例如复杂计算)并将操作结果以值的形式返回的例程。返回值可以是单个标量值或结果集。SQL Server 2005中有多种函数,根据返回值的类型和是否由系统提供,分为标量函数、表值函数和内置函数。SQL Server 2005支持3种用户定义函数:标量函数、表值函数和聚合函数。本章介绍用户定义函数的创建、修改及删除。 第二页,共27页 14.1 用户自定义函数简介 SQL Server不但提供了系统内置函数,而且还允许用户根据实际需要创建用户自定义函数。用户自定义函数是由一条或多条T-SQL语句组成的子程序,保存在数据库内。它可以具有多个输入参数,并返回一个标量值(单个数据值)或一个表。 第三页,共27页 用户自定义函数有以下3种类型: 返回单值的标量函数; 类似于视图的可更新内嵌表值函数; 使用代码创建结果集的多语句表值函数。 第四页,共27页 14.2.1 标量函数 14.2.2 内嵌表值函数 14.2.3 多语句表值函数 14.2 创建用户自定义函数 第五页,共27页 标量函数类似于系统内置函数。函数的输入参数可以是所有标量数据类型,输出参数的类型可以是除了text、nText、image、cursor、timestamp以外的任何数据类型,函数主体在BEGIN-END块中定义。 14.2.1 标量函数 第六页,共27页 标量函数 标量函数是返回单个值的函数。标量函数可以接受多个参数进行计算,并且返回单个值。标量函数一经定义后,就可以在SQL Server的表达式(如表的计算列)中使用该函数。 创建标量函数的语法: CREATE FUNCTION FunctionName(InputParameters) RETURNS Datatype AS BEGIN Sqlstatement RETURN Expression END 第七页,共27页 创建一个用户定义标量函数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 第八页,共27页 下面的用户定义标量函数可以根据学生的学号查询学生的出生日期,由此计算出并返回学生的年龄值。 --参数@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 第九页,共27页 查看定义: select * from sys.sql_modules 或 select definition from sys.sql_modules where object_id=OBJECT_ID(‘fsum’) 第十页,共27页 例14-1 use BlueSkyDB go create function FunBookSale(@bookID int) return int as begin declare @quantity int select @quantity=sum(quantity) from OrdreItems where bookID=@bookID if(@quantity is null) set @quantity =0 return @quantity end go 第十一页,共27页 use BlueSkyDB go select * ,dbo.FunBookSale(
原创力文档

文档评论(0)