sql server 2014中用户定义函数如何保存在表值函数下

sql server 2014中用户定义函数如何保存在表值函数下,sql,sql-server-2012,sql-server-2014,Sql,Sql Server 2012,Sql Server 2014,我不确定我问这个问题的位置是否合适。 但我想知道我创建的函数是如何归入表值函数的?为什么它不能在标量函数中 我在数据库中记录了以下函数 IF OBJECT_ID (N'dbo.ufnGetTVP', N'FN') IS NOT NULL DROP FUNCTION ufnGetTVP; GO CREATE FUNCTION dbo.ufnGetTVP(@input varchar(50)) returns @mt table (a nvarchar(60)) AS

我不确定我问这个问题的位置是否合适。 但我想知道我创建的函数是如何归入表值函数的?为什么它不能在标量函数中

我在数据库中记录了以下函数

IF OBJECT_ID (N'dbo.ufnGetTVP', N'FN') IS NOT NULL  
    DROP FUNCTION ufnGetTVP;  
GO  
CREATE FUNCTION dbo.ufnGetTVP(@input varchar(50))  
returns @mt table (a nvarchar(60))
AS   
-- Returns the stock level for the product.  
BEGIN      
declare @output varchar(1)
declare @len int=(select len(@input))
while(@len>0)
begin
set @output =substring(@input,0,2)

set @input=substring(@input,charindex(@output,@input)+2,len(@input))
SET @len=len(@input)

insert into @mt 
Select @OUTPUT 
end
return
END;  
GO  
如果函数将另存为TVF,如何创建标量函数? 请分享你的想法。

正如我在评论中所写的-标量函数和表值函数之间的区别只是函数的返回类型。
标量值函数是返回标量(或单个)值(如int、varchar、bit等)的函数,而表值函数是返回表的函数

创建标量函数的基本语法与创建表函数的基本语法相同:

CREATE FUNCTION <name>
(
<parameters list>
)
RETURNS <scalar type>
AS
BEGIN
    -- function code goes here
END;
创建函数
(
)
返回
作为
开始
--函数代码在这里
结束;

因为它返回一个表?我觉得这是一个技巧性的问题。标量函数是返回单个值的函数,比如int、varchar、bit等等。表值函数是返回表的函数。