1、表值函数:用户定义表值函数返回 table 数据类型。对于内联表值函数,没有函数主体;表是单个 SELECT 语句的结果集。 2、标量函数:标量函数返回一个确定类型的标量值。其返回值类型为除TEXT、NTEXT 、IMAGE、CURSOR、 TIMESTAMP 和TABLE 类型外的其它数据类型。函数体语句定义在BEGIN-END语句内,其中包含了可以返回值的Transact-SQL 命令。 3、存储过程:存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。功能强大,限制少,不能直接引用返回值,用select语句返回记录集 内联表值函数,标量函数均为用户自定义函数 诸多限制,有许多语句不能使用,许多功能不能实现,可以直接引用返回值,用表变量返回记录集。其中用户定义函数的定义是这样的: Microsoft SQL Server 2000 允许创建用户定义函数。与任何函数一样,用户定义函数是可返回值的例程。根据所返回值的类型,每个用户定义函数可分成以下三个类别: 1、返回可更新数据表的函数 如果用户定义函数包含单个 SELECT 语句且该语句可更新,则该函数返回的表格格式结果也可以更新。 2、返回不可更新数据表的函数 如果用户定义函数包含不止一个 SELECT 语句,或包含一个不可更新的 SELECT 语句,则该函数返回的表格格式结果也不可更新。 3、返回标量值的函数 用户定义函数可以返回标量值。



标量函数:标量函数用于对传递给它的一个或者多个参数值进行处理和计算,并返回一个单一的值。


标量值函数示例:


CREATE FUNCTION dbo.Foo()


RETURNS int


AS 


BEGIN 


declare @n int


select @n=3


return @n


END



SQL中的函数



在Transact-SQL语言中,函数被用来执行一些特殊的运算以支持SQL Server的标准命令。Transact-SQL 编程语言提供了三种函数: 


一行集函数:行集函数可以在Transact-SQL语句中当作表引用。 


二聚合函数:聚合函数用于对一组值执行计算并返回一个单一的值。 


三标量函数:标量函数用于对传递给它的一个或者多个参数值进行处理和计算,并返回一个单一的值。



另外:


SQL Server 2000 允许用户创建自定义函数,自定义函数可以有返回值。



自定义函数分为:标量值函数或表值函数



•如果 RETURNS 子句指定一种标量数据类型,则函数为标量值函数。可以使用多条 Transact-SQL 语句定义标量值函数。 


•如果 RETURNS 子句指定 TABLE,则函数为表值函数。