/* 1标量值函数,简单点来讲就是返回的结果只是一个标量,对于我来讲,返回的结果就是一种类型的一个值。 2内联表值函数 ,内联表值函数返回的是表数据。当然罗,表数据就是Table类型。内联表函数返回的表结构由函数体内的SELECT语句来决定。 3多语句表值函数,多语句表值函数跟内联表值函数都是表值函数,它们返回的结果都是Table类型。多语句表值函数顾名思义,就是可以通过多条语句来创建Table类型的数据。这里不同于内联表值函数,内联表值函数的返回结果是由函数体内的SELECT语句来决定。而多语句表值函数,则是需要指定具体的Table类型的结构。也就是说返回的Table,已经定义好要哪些字段返回。所以它能够支持多条语句的执行来创建Table数据。 自定义函数注意: 1 可以返回表变量 2不能使用output参数;不能用临时表;函数内部的操作不能影响到外部环境;不能通过select返回结果集;不能update,delete,数据库表; 3必须return 一个标量值或表变量 */ create function [ schema_name. ] function_name ( [ { @parameter_name [ as ][ type_schema_name. ] parameter_data_type [ = default ] [ readonly ] } [ ,...n ] ] ) returns return_data_type [ with <function_option> [ ,...n ] ] [ as ] begin function_body return scalar_expression end [ ; ] --新建标量值函数 create function biaoliangfun( @va1 int=1,@va2 int) returns int as begin declare @result int=1 return @result end --新建内联表值函数 create function biaozhifun( @va1 int) returns table as return ( select id,name from people where age = @va1 ) --新建多语句表值函数 create function duobiaofun( @va1 int) returns @result table (id int,name nvarchar(20)) as begin insert into @result(id,name) values(100,'china') return end --删除标量值函数 drop function biaoliangfun --调用表值函数 select * from biaozhifun(10) --调用标量值函数 declare @zhi int set @zhi=biaoliangfun(10)