Freigeben über


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;