如何将列表作为输入参数传递给 TBV 函数?

How do i pass list as a input parameter to the TBV function?

我有一个 TBV 函数,想像这样传递我的函数列表类型参数

ALTER FUNCTION [dbo].[fn_Functiont]
(
 @listType (what  type i could use here ??)
)
RETURNS TABLE 
AS
RETURN 
(   
SELECT d.*, b.Name AS Name, ps.Name AS PaymentSystemName, c.UserName AS UserName, c.FirstName AS ClientFirstName, c.LastName AS LastName, c.Number AS DocumentNumber, c.Id
FROM Document AS d
JOIN System AS ps ON d.SystemId = ps.Id
JOIN Client AS c ON c.Id = d.ClientId
LEFT JOIN Shop AS b ON b.Id = d.ShopId
WHERE d.OperationTypeId IN (2, 4, 5) AND c.Type = 1
)

我想在我的函数中使用这个@listType,特别是检查列表是否包含任何值并用它做一些事情 value.I 我通过 Entity Framework 调用这个函数 5。

过去,我们通常传递逗号分隔的字符串并将其拆分为 table。现在SQL服务器支持User-Defined table类型,可以在您的场景中使用。

创建新的用户定义 table 类型

 CREATE TYPE CustomList AS TABLE 
 ( 
   ListItem VARCHAR(50)
 )
 GO

如何申报

DECLARE @MyList CustomList

如何使用

INSERT INTO @MyList
SELECT '1'
GO
INSERT INTO @MyList
SELECT '2'

在您的情况下,您可以按以下方式输入列表。

ALTER FUNCTION [dbo].[fn_Functiont]
(
 @listType MYLIST
)
....
....

要了解有关此访问的更多信息MSDN

要知道如何使用 table 输入 entity framework 你可以查看 here