Share via


Fonctions définies par l'utilisateur dans AdventureWorks

L'exemple de base de données OLTP AdventureWorks comporte plusieurs fonctions Transact-SQL définies par l'utilisateur. Des exemples de fonctions CLR (common language runtime) définies par l'utilisateur sont disponibles dans Exemples de programmabilité CLR.

Fonctions CLR définies par l'utilisateur

Le tableau suivant répertorie les exemples de fonctions CLR définies par l'utilisateur qui sont disponibles. Pour plus d'informations sur les fonctions CLR définies par l'utilisateur, consultez Fonctions CLR définies par l'utilisateur.

Aperçu

Description

Manipulation de chaînes sensible aux caractères supplémentaires

Illustre la mise en œuvre de cinq fonctions de chaîne Transact-SQL qui, si elles offrent les mêmes fonctions de modification de chaîne que les fonctions intégrées, disposent en outre d'une capacité à reconnaître les caractères pour traiter à la fois les chaînes Unicode et les chaînes de caractères supplémentaires. Ces cinq fonctions sont len_s(), left_s(), right_s(), sub_s() et replace_s(). Elles sont équivalentes aux fonctions de chaîne intégrées LEN(), LEFT(), RIGHT(), SUBSTRING() et REPLACE().

Accès aux données in-process (exemple)

Contient plusieurs fonctions simples qui démontrent diverses caractéristiques du fournisseur d'accès aux données intégré SQLCLR.

Couche CLR AdventureWorks Cycles

Contient une fonction de conversion de devise qui retourne une instance d'un type de devise défini par l'utilisateur.

Utilitaires UDT

Comporte des fonctions pour exposer les métadonnées d'un assembly en Transact-SQL ; des exemples de fonctions en continu à valeur de table pour retourner les types dans un assembly sous forme de table ; et enfin des fonctions pour retourner les champs, méthodes et propriétés dans un type défini par l'utilisateur. Illustre les technologies telles que les fonctions en continu à valeur de table, les API de réflexion Microsoft .NET Framework et l'appel des fonctions à valeur de table à partir de Transact-SQL.

Fonctions Transact-SQL définies par l'utilisateur

Le tableau suivant répertorie les fonctions Transact-SQL définies par l'utilisateur qui sont incluses dans l'exemple de base de données OLTP AdventureWorks. Pour plus d'informations sur les fonctions Transact-SQL définies par l'utilisateur, consultez Fonctionnement des fonctions définies par l'utilisateur.

Fonction définie par l'utilisateur

Description

Paramètres d'entrée

Valeurs de retour

ufnLeadingZeros

Fonction scalaire qui ajoute des zéros non significatifs à un entier spécifié. La fonction retourne un type de données varchar(8).

@valueint

@ReturnValuevarchar(8)

ufnGetContactInformation

Simplifie l'accès de l'utilisateur aux données en encapsulant une requête complexe dans une fonction à valeur de table.

@contactidint

ContactIDint, FirstNamenvarchar(50), LastNamenvarchar(50), JobTitle nvarchar(50), ContactType nvarchar(50)

ufnGetProductDealerPrice

Fonction scalaire qui calcule le prix de vente d'un produit spécifique en fonction du prix courant du produit à une date fixe.

@productIDint, @orderdate

datetime

@DealerPricemoney

Exemple

A. Utilisation de la fonction dbo.ufnLeadingZeros

L'exemple suivant utilise la fonction ufnLeadingZeros pour générer un numéro de compte client à partir d'une colonne CustomerID existante dans la table Customer.

USE AdventureWorks;
GO
SELECT CustomerID,('AW' + dbo.ufnLeadingZeros(CustomerID)) 
    AS GenerateAccountNumber
FROM Sales.Customer
ORDER BY CustomerID;
GO

B. Utilisation de la fonction dbo.ufnGetContactInformation

La base de données AdventureWorks contient les noms des employés, des clients (responsables de magasins ou clients individuels) et des responsables des fournisseurs dans une table, la table Contact. La fonction à valeur de table ufnGetContactInformation retourne une ligne pour chaque ContactID spécifié.

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. Utilisation de la fonction dbo.ufnGetProductDealerPrice

L'exemple suivant utilise la fonction ufnGetProductDealerPrice pour retourner le prix de vente réduit pour tous les produits de la table ProductListPriceHistory.

USE AdventureWorks;
GO
SELECT ProductID, ListPrice, dbo.ufnGetProductDealerPrice(ProductID, StartDate) AS DealerPrice,
    StartDate, EndDate
FROM Production.ProductListPriceHistory
WHERE ListPrice > .0000
ORDER BY ProductID, StartDate;