Microsoft SQL Server 2012 Bible von

Der zweite Typ von benutzerdefinierten Funktionen, die Inline-tabellenwertige Funktion, ähnelt einem View. Beide sind für eine gespeicherte SELECT-Anweisung umhüllt. Eine benutzerdefinierte Funktion mit Inline-Tabellenwert behält die Vorteile eines Views bei und fügt Parameter hinzu. Wie bei einem View ist auch die Funktion aktualisierbar, wenn die SELECT-Anweisung aktualisierbar ist.

Erstellen einer tabellenwertigen Inline-Funktion

Die benutzerdefinierte Inline-Funktion mit Tabellenwert hat keinen BEGIN/END-Körper. Stattdessen wird die SELECT-Anweisung als virtuelle Tabelle zurückgegeben:

CREATE FUNCTION FunctionName (InputParameters)RETURNS TableASRETURN (Select Statement);

Die folgende Inline-Tabellenwertfunktion ähnelt ufnGetOrderTotalByProduct, aber anstatt eine einzelne Bestellsumme für ein bereitgestelltes Produkt zurückzugeben, gibt sie einen Satz zurück, der Produktname und Bestellsumme für eine bereitgestellte Produktkategorie enthält.

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

Aufrufen einer tabellenwertigen Inline-Funktion

Um Daten über dbo.ufnGetOrderTotalByProductCategory abzurufen, rufen Sie die Funktion …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.