Benutzerdefinierte Funktionen in AdventureWorks
Die AdventureWorks-OLTP-Beispieldatenbank umfasst mehrere benutzerdefinierte Funktionen von Transact-SQL. Beispiele für CLR-benutzerdefinierte Funktionen (Common Language Runtime) finden Sie unter Beispiele für die CLR-Programmierbarkeit.
CRL-benutzerdefinierte Funktionen
In der folgenden Tabelle werden Beispiele für die verfügbaren CLR-benutzerdefinierten Funktionen aufgeführt. Weitere Informationen zu CLR-benutzerdefinierten Funktionen finden Sie unter CLR-benutzerdefinierte Funktionen.
Beispiel |
Beschreibung |
---|---|
Zeichenfolgendarstellung mit ergänzenden Zeichen |
Stellt die Implementierung von fünf Transact-SQL-Zeichenfolgenfunktionen dar, die dieselben Änderungsfunktionen für Zeichenfolgen bereitstellen wie integrierte Funktionen, jedoch zusätzliche Fähigkeiten für weitere Zeichen bieten, um sowohl Unicode- als auch Sonderzeichenfolgen bearbeiten zu können. Die fünf Funktionen sind len_s(), left_s(), right_s(), sub_s() und replace_s(). Sie entsprechen den integrierten Zeichenfolgenfunktionen LEN(), LEFT(), RIGHT(), SUBSTRING() und REPLACE(). |
Beispiel für prozessinternen Datenzugriff |
Enthält mehrere einfache Funktionen, die verschiedene Features des prozessinternen SQLCLR-Datenzugriffsanbieters darstellen. |
AdventureWorks Cycles CLR Layer |
Enthält eine Währungsumrechnungsfunktion, die eine Instanz eines benutzerdefinierten Währungstyps zurückgibt. |
UDT-Dienstprogramme |
Umfasst Funktionen zum Offenlegen von Assemblymetadaten für Transact-SQL, Beispiele für Streaming-Tabellenwertfunktionen, um die Typen in einer Assembly als Tabelle zurückzugeben, sowie Funktionen, um die Felder, Methoden und Eigenschaften in einem benutzerdefinierten Typ zurückzugeben. Veranschaulicht Technologien, wie Streaming-Tabellenwertfunktionen, Microsoft .NET Framework-Reflektions-APIs und das Aufrufen von Tabellenwertfunktionen aus Transact-SQL. |
Benutzerdefinierte Funktionen in Transact-SQL
In der folgenden Tabelle werden die benutzerdefinierten Funktionen in Transact-SQL aufgelistet, die in der AdventureWorks-OLTP-Beispieldatenbank enthalten sind. Weitere Informationen zu benutzerdefinierten Funktionen in Transact-SQL finden Sie unter Grundlegendes zu benutzerdefinierten Funktionen.
Benutzerdefinierte Funktion |
Beschreibung |
Eingabeparameter |
Rückgabewerte |
---|---|---|---|
ufnLeadingZeros |
Skalarfunktion, die einer bestimmten ganzen Zahl führende Nullen hinzufügt. Die Funktion gibt den Datentyp varchar(8) zurück. |
@valueint |
@ReturnValuevarchar(8) |
ufnGetContactInformation |
Vereinfacht den Benutzerzugriff auf Daten, indem eine komplexe Abfrage in einer Tabellenwertfunktion gekapselt wird. |
@contactidint |
ContactIDint, FirstNamenvarchar(50), LastNamenvarchar(50), JobTitle nvarchar(50), ContactType nvarchar(50) |
ufnGetProductDealerPrice |
Skalarfunktion, die den Händlerpreis für ein bestimmtes Produkt anhand des Listenpreises des Produkts an einem bestimmten Datum berechnet. |
@productIDint, @orderdate datetime |
@DealerPricemoney |
Beispiele
A. Verwenden von dbo.ufnLeadingZeros
Im folgenden Beispiel wird die ufnLeadingZeros-Funktion verwendet, um die Kontonummer eines Kunden aus einer vorhandenen CustomerID-Spalte in der Customer-Tabelle zu generieren.
USE AdventureWorks;
GO
SELECT CustomerID,('AW' + dbo.ufnLeadingZeros(CustomerID))
AS GenerateAccountNumber
FROM Sales.Customer
ORDER BY CustomerID;
GO
B. Verwenden von dbo.ufnGetContactInformation
Die AdventureWorks-Datenbank enthält die Namen von Mitarbeitern, Kunden (Geschäftspersonal oder einzelne Verbraucher) und Herstellerkontakten in der Contact-Tabelle. Die ufnGetContactInformation-Tabellenwertfunktion gibt eine Zeile für eine bestimmte ContactID zurück.
USE AdventureWorks;
GO
SELECT ContactID, FirstName, LastName, JobTitle, ContactType
FROM dbo.ufnGetContactInformation(2200);
GO
SELECT ContactID, FirstName, LastName, JobTitle, ContactType
FROM dbo.ufnGetContactInformation(5);
GO
C. Verwenden von dbo.ufnGetProductDealerPrice
Im folgenden Beispiel wird der diskontierte Händlerpreis für alle Produkte in der ProductListPriceHistory-Tabelle mithilfe der ufnGetProductDealerPrice-Funktion zurückgegeben.
USE AdventureWorks;
GO
SELECT ProductID, ListPrice, dbo.ufnGetProductDealerPrice(ProductID, StartDate) AS DealerPrice,
StartDate, EndDate
FROM Production.ProductListPriceHistory
WHERE ListPrice > .0000
ORDER BY ProductID, StartDate;
Siehe auch