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.
CLR-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 User-Defined Functions.
Beispiel | Beschreibung |
---|---|
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(). |
|
Enthält mehrere einfache Funktionen, die verschiedene Features des prozessinternen SQLCLR-Datenzugriffsanbieters darstellen. |
|
Enthält eine Streaming-Tabellenwertfunktion in C# und Microsoft Visual Basic, die eine durch Komma getrennte Zeichenfolge in eine Tabelle mit einer Spalte unterteilt. Enthält zudem eine Aggregatfunktion, die eine Zeichenfolgenspalte in eine durch Komma getrennte Zeichenfolge konvertiert. |
|
Enthält eine Währungsumrechnungsfunktion, die eine Instanz eines benutzerdefinierten Währungstyps zurückgibt. |
|
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
Andere Ressourcen
SQL Server-Objekte in AdventureWorks
CREATE FUNCTION (Transact-SQL)