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

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().

In-Process Data Access-Beispiel

Enthält mehrere einfache Funktionen, die verschiedene Features des prozessinternen SQLCLR-Datenzugriffsanbieters darstellen.

String Utilities-Beispiel

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.

AdventureWorks Cycles CLR Layer

Enthält eine Währungsumrechnungsfunktion, die eine Instanz eines benutzerdefinierten Währungstyps zurückgibt.

UDT Utilities

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)

Hilfe und Informationen

Informationsquellen für SQL Server 2005