表值函数

用户定义表值函数返回 table 数据类型。

表值函数主要用于数据计算出来返回结果集。

--不带输入参数的表值函数

create function tvpoints()
returns table
as
return
(
select * from tb_users
);

--调用

select  * from  tvpoints()

--对于多语句表值函数,在 BEGIN...END 语句块中定义的函数体包含一系列 Transact-SQL 语句,这些语句可生成行并将其插入将返回的表中。

create function tvpoints1()
returns @points table (x float, y float)
as begin
insert @points values(1,2);
insert @points values(3,4);
return;
end

--带参数

create function tvpoints3(@x AS int,@y as int)
returns @points table (x float, y float)
as begin
insert @points values(@x,@y);
return;
end

--调用

select * from tvpoints3(1,2)

create function [dbo].[FGetSplitTable](@multiinput varchar(max))
Returns @multitable Table(Text varchar(30))
begin


Declare @split char(1)
Declare @store varchar(30)
Declare @start int, @end int, @len int
Declare @source varchar(max)

Select @split = ','

select @start = 1
select @source = ltrim(rtrim(@multiinput)) + @split

select @end = CharIndex(@split, @source, @start)
select @len = Len(@source)

While @start < @len
Begin
select @end = CharIndex(@split, @source, @start)
select @store = ltrim(rtrim(SubString(@source, @start, @end - @start)))
select @start = @end + 1

If @store <> '' Insert into @multitable(Text) select ltrim(rtrim(@store))
End

return
End
go

原文地址:https://www.cnblogs.com/anyihen/p/12335361.html