Microsoft SQL Server 2012 Bible by

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ę …

.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *