Partager via


Comment : créer et exécuter une fonction définie par l'utilisateur SQL Server à l'aide de l'intégration du Common Language Runtime

Créez une fonction SQL définie par l'utilisateur en ajoutant une Fonction définie par l'utilisateur à un projet de base de données du Common Language Runtime SQL Server (CLR SQL). Une fois le déploiement réussi, la fonction définie par l'utilisateur peut être appelée et exécutée.

Notes

Il est possible que votre ordinateur affiche des noms ou des emplacements différents pour certains des éléments d'interface utilisateur de Visual Studio dans les instructions suivantes. L'édition de Visual Studio dont vous disposez et les paramètres que vous utilisez déterminent ces éléments. Pour plus d'informations, consultez Paramètres Visual Studio.

Création de fonctions définies par l'utilisateur SQL Server

Pour générer et déployer cette fonction à l'aide de Visual Studio

  1. Ouvrez un Projet de base de données CLR SQL existant ou créez-en un. Pour plus d'informations, consultez Comment : créer un projet pour des objets de base de données qui utilisent l'intégration du Common Language Runtime SQL Server.

  2. Dans le menu Projet, cliquez sur Ajouter un nouvel élément.

  3. Dans la boîte de dialogue Ajouter un nouvel élément, sélectionnez Fonction définie par l'utilisateur.

  4. Tapez un Nom pour la nouvelle fonction définie par l'utilisateur.

  5. Ajoutez le code à exécuter lorsque la fonction définie par l'utilisateur est appliquée. Consultez le premier exemple qui suit cette procédure.

  6. Dans l'Explorateur de solutions, ouvrez le dossier Scripts de test et double-cliquez sur le fichier Test.sql afin de pouvoir le modifier. Ajoutez le code permettant d'exécuter votre fonction définie par l'utilisateur. Consultez le deuxième exemple qui suit cette procédure.

    Notes

    Vous pouvez spécifier d'autres scripts comme script de débogage par défaut. Pour plus d'informations, consultez Comment : modifier le script Test.sql pour exécuter des objets qui utilisent l'intégration du Common Language Runtime SQL Server.

  7. Déployez la fonction définie par l'utilisateur sur SQL Server. Pour plus d'informations, consultez Comment : déployer des éléments de projet de base de données CLR SQL sur un serveur SQL Server.

    Important

    SQL Server 2005 et SQL Server 2008 prennent uniquement en charge les projets SQL Server générés avec la version 2.0, 3.0 ou 3.5 de .NET Framework. Si vous essayez de déployer un projet SQL Server dans SQL Server 2005 ou SQL Server 2008, une erreur s'affiche : Deploy error (SQL01268): .NET SqlClient Data Provider: Msg 6218, Level 16, State 3, Line 1 CREATE ASSEMBLY for assembly 'AssemblyName' failed because assembly 'AssemblyName' failed verification. Check if the referenced assemblies are up-to-date and trusted (for external_access or unsafe) to execute in the database (où AssemblyName est le nom de l'assembly que vous déployez). Pour plus d'informations, consultez Comment : créer un projet pour des objets de base de données qui utilisent l'intégration du Common Language Runtime SQL Server.

  8. Appuyez sur F5 pour déboguer la fonction définie par l'utilisateur en l'exécutant sur SQL Server.

Description

L'exemple de code suivant crée une fonction scalaire définie par l'utilisateur (addTax) qui prend un prix comme paramètre, ajoute le taux de TVA et retourne le prix TVA comprise.

Après avoir créé la fonction, déployez-la vers SQL Server. Pour plus d'informations, consultez Comment : déployer des éléments de projet de base de données CLR SQL sur un serveur SQL Server.

Code

Imports System.Data.SqlTypes
Imports Microsoft.SqlServer.Server

Partial Public Class UserDefinedFunctions

    Public Const SALES_TAX As Double = 0.086

    <SqlFunction()> 
    Public Shared Function addTax(ByVal originalAmount As SqlDouble) As SqlDouble

        Dim taxAmount As SqlDouble = originalAmount * SALES_TAX

        Return originalAmount + taxAmount
    End Function
End Class
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;

public partial class UserDefinedFunctions
{
    public const double SALES_TAX = .086;

    [SqlFunction()]
    public static SqlDouble addTax(SqlDouble originalAmount)
    {
        SqlDouble taxAmount = originalAmount * SALES_TAX;

        return originalAmount + taxAmount;
    }
}

Description

Ajoutez le code permettant de tester la fonction définie par l'utilisateur au fichier Test.sql situé dans le dossier Scripts de test de votre projet. Par exemple, pour tester cette fonction, utilisez une requête, telle que "SELECT dbo.addTax(10)". La valeur "10.86" doit être retournée.

Code

SELECT dbo.addTax(10)

Voir aussi

Tâches

Comment : créer un projet pour des objets de base de données qui utilisent l'intégration du Common Language Runtime SQL Server

Comment : créer et exécuter une procédure stockée SQL Server à l'aide de l'intégration du Common Language Runtime

Comment : créer et exécuter un déclencheur SQL Server à l'aide de l'intégration du Common Language Runtime

Comment : créer et exécuter un agrégat SQL Server à l'aide de l'intégration du Common Language Runtime

Comment : créer et exécuter un type défini par l'utilisateur SQL Server à l'aide de l'intégration du Common Language Runtime

Procédure pas à pas : création d'une procédure stockée dans le code managé

Comment : déboguer une procédure stockée SQL CLR

Référence

Attributs pour les projets de base de données CLR SQL et les objets de base de données

Concepts

Présentation de l'intégration de CLR dans SQL Server (ADO.NET)

Avantages de l'utilisation de code managé pour créer des objets de base de données

Création d'objets SQL Server dans du code managé

Autres ressources

SQL CLR Database Debugging