Comment : créer et exécuter une fonction définie par l'utilisateur SQL Server CLR

Mise à jour : novembre 2007

Créez une fonction définie par l'utilisateur SQL en ajoutant une Fonction définie par l'utilisateur à un projet SQL Server. Une fois le déploiement réussi, la fonction définie par l'utilisateur peut être appelée et exécutée.

Remarque :

La fonctionnalité d'intégration du Common Language Runtime (CLR) est désactivée par défaut dans Microsoft SQL Server et doit être activée pour utiliser des éléments de projet SQL Server. Pour activer l'intégration du CLR, utilisez l'option clr enabled de la procédure stockée sp_configure. Pour plus d'informations, consultez Activation de l'intégration CLR.

Remarque :

Il est possible que votre ordinateur affiche des noms ou des emplacements différents pour certains des éléments d'interface utilisateur 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 SQL Server existant ou créez-en un. Pour plus d'informations, consultez Comment : créer un projet SQL Server.

  2. Dans le menu Projet, sélectionnez Ajouter un nouvel élément.

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

  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.

    Remarque :

    Les exemples C++ doivent être compilés avec l'option du compilateur /clr:safe.

  6. Pour Visual Basic et Visual C#, dans l'Explorateur de solutions, ouvrez le dossier TestScripts 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.

    Pour Visual C++, dans l'Explorateur de solutions, double-cliquez sur le fichier debug.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.

  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 SQL Server sur un serveur 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.

Une fois la fonction créée, déployez-la sur SQL Server. Pour plus d'informations, consultez Comment : déployer des éléments de projet SQL Server 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;
    }
}
#include "stdafx.h"

#using <System.dll>
#using <System.Data.dll>
#using <System.Xml.dll>

using namespace System;
using namespace System::Data;
using namespace System::Data::Sql;
using namespace System::Data::SqlTypes;
using namespace Microsoft::SqlServer::Server;

// In order to debug your Aggregate, add the following to your debug.sql file:
//
// SELECT dbo.addTax(10)
//

public ref class UserDefinedFunctions
{
public:
    static initonly double SALES_TAX = 0.086;

    [SqlFunction()]
    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 (debug.sql en Visual C++) situé dans le dossier TestScripts 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 SQL Server

Comment : créer et exécuter une procédure stockée SQL Server CLR

Comment : créer et exécuter un déclencheur SQL Server CLR

Comment : créer et exécuter un agrégat SQL Server CLR

Comment : créer et exécuter une fonction définie par l'utilisateur SQL Server CLR

Comment : créer et exécuter un type défini par l'utilisateur SQL Server CLR

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

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

Modèles d'élément pour les projets SQL Server

Référence

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

Autres ressources

Débogage d'une base de données SQL CLR