我有一个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,特别是检查该列表是否包含任何值,并使用该值执行某些操作。我通过Entity Framework 5调用此函数。
答案 0 :(得分:2)
过去我们曾经传过逗号分隔的字符串并将其拆分为表格。现在,SQL Server支持用户定义的表类型,可以在您的方案中使用。
创建新的用户定义表格类型
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
要了解如何在实体框架中使用表类型,您可以查看here