Drugi typ funkcji zdefiniowanej przez użytkownika, inline table-valued function, jest podobny do widoku. Obie są opakowane w przechowywaną instrukcję SELECT. Inline table-valued user-defined function zachowuje zalety widoku i dodaje parametry. Tak jak w przypadku widoku, jeśli instrukcja SELECT jest aktualizowalna, funkcja jest również aktualizowalna.
Tworzenie funkcji inline table-valued
Funkcja użytkownika inline table-valued nie posiada ciała BEGIN/END. Zamiast tego, instrukcja SELECT jest zwracana jako tabela wirtualna:
CREATE FUNCTION FunctionName (InputParameters)RETURNS TableASRETURN (Select Statement);
Następująca funkcja inline table-valued jest podobna do ufnGetOrderTotalByProduct, ale zamiast zwracać pojedynczą sumę zamówienia dla dostarczonego produktu, zwraca zestaw, który zawiera nazwę produktu i sumę zamówienia dla dostarczonej kategorii produktu.
CREATE FUNCTION dbo.ufnGetOrderTotalByProductCategory(@ProductCategoryID int)RETURNS TABLEAS RETURN ( SELECT p.ProductID, p.Name, sum(sod.OrderQty) as TotalOrders FROM Production.Product p JOIN Sales.SalesOrderDetail sod ON p.ProductID = sod.ProductID JOIN Production.ProductSubcategory s ON p.ProductSubcategoryID = s.ProductSubcategoryID JOIN Production.ProductCategory c ON s.ProductCategoryID = c.ProductCategoryID WHERE c.ProductCategoryID = @ProductCategoryID GROUP BY p.ProductID, p.Name ); GO
Wywołanie funkcji Inline Table-Valued Function
Aby pobrać dane za pomocą dbo.ufnGetOrderTotalByProductCategory, wywołaj funkcję …
.