TBV機能があります。このような
ALTER FUNCTION [dbo].[fn_Functiont]
(
@accessibleIds ListAccesableIds READONLY
)
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
)
この関数に整数を含むリストを渡したいと思います。テーブル値型を作成するのは難しかったのですが、リスト入力パラメーターを関数に渡すにはどうすればよいですか?ADO.Netを介してリストをSPとても簡単ですが、私の問題はEntity FrameworkとTBF関数に関するものです
Entity Framework 6を介してこの関数を呼び出し、私たちが使用したアプローチは最初にデータベースでした。
SQL-Server 2014では、 [〜#〜] type [〜#〜] (エイリアスデータ型)を活用して、整数の配列をシミュレートするインラインUDFのパラメーターとして渡すことができます。またはその他の表形式のデータ。
READONLYを使用する必要があることに注意してください。
IF OBJECT_ID('dbo.MyTest') IS NOT NULL
DROP TABLE dbo.MyTest;
GO
IF OBJECT_ID('dbo.MyFunction') IS NOT NULL
DROP FUNCTION dbo.MyFunction;
GO
IF TYPE_ID ('dbo.Mytype') IS NOT NULL
DROP TYPE dbo.Mytype;
GO
CREATE TYPE dbo.Mytype AS TABLE (Id int);
GO
CREATE TABLE dbo.MyTest (Id int, Val char(3));
INSERT INTO dbo.MyTest VALUES (1,'V1'),(2,'V2'),(10,'V10'),(11,'V11');
GO
CREATE FUNCTION dbo.MyFunction(@Table MyType READONLY)
RETURNS TABLE
AS
RETURN
(
SELECT *
FROM MyTest
WHERE Id IN (SELECT Id FROM @Table)
);
GO
DECLARE @myTable Mytype;
INSERT INTO @myTable(Id) VALUES(1),(2),(3),(4),(5);
SELECT * FROM MyFunction(@myTable);
| Id | Status |
|:--:|:------:|
| 1 | V1 |
| 2 | V2 |
dbfiddle ここ