Gewusst wie: Erstellen und Ausführen einer benutzerdefinierten CLR SQL Server-Funktion

Aktualisiert: November 2007

Erstellen Sie eine benutzerdefinierte SQL-Funktion, indem Sie einem SQL Server-Projekt eine Benutzerdefinierte Funktion hinzufügen. Nach erfolgreicher Bereitstellung kann die benutzerdefinierte Funktion aufgerufen und ausgeführt werden.

Hinweis:

Das CLR-Integrationsfeature (Common Language Runtime) ist in Microsoft SQL Server in der Standardeinstellung deaktiviert und muss aktiviert werden, damit SQL Server-Projektelemente verwendet werden können. Die CLR-Integration kann mithilfe der Option CLR aktiviert der gespeicherten Prozedur sp_configure aktiviert werden. Weitere Informationen finden Sie unter Aktivieren der CLR-Integration.

Hinweis:

Ihr Computer zeigt möglicherweise für einige der Elemente der Visual Studio-Benutzeroberfläche in der folgenden Anleitung andere Namen oder Standorte an. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Visual Studio-Einstellungen.

Erstellen von benutzerdefinierten SQL Server-Funktionen

So können Sie diese Funktion mithilfe von Visual Studio erstellen und bereitstellen

  1. Öffnen Sie ein vorhandenes SQL Server-Projekt, oder erstellen Sie ein neues. Weitere Informationen finden Sie unter Gewusst wie: Erstellen eines SQL Server-Projekts.

  2. Wählen Sie im Menü Projekt die Option Neues Element hinzufügen aus.

  3. Wählen Sie im Dialogfeld "Neues Element hinzufügen" die Option Benutzerdefinierte Funktion aus.

  4. Geben Sie einen Namen für die neue benutzerdefinierte Funktion ein.

  5. Fügen Sie Code hinzu, der ausgeführt werden soll, wenn die benutzerdefinierte Funktion ausgeführt wird. Sehen Sie sich das erste Beispiel an, das dieser Prozedur folgt.

    Hinweis:

    C++-Beispiele müssen mit der /clr:safe-Compileroption kompiliert werden.

  6. Öffnen Sie für Visual Basic und Visual C# im Projektmappen-Explorer den Ordner TestScripts, und doppelklicken Sie auf die Datei Test.sql, um sie zur Bearbeitung zu öffnen. Fügen Sie Code hinzu, um die benutzerdefinierte Funktion auszuführen. Sehen Sie sich das zweite Beispiel an, das dieser Prozedur folgt.

    Doppelklicken Sie für Visual C++ im Projektmappen-Explorer auf die Datei debug.sql, um sie zur Bearbeitung zu öffnen. Fügen Sie Code hinzu, um die benutzerdefinierte Funktion auszuführen. Sehen Sie sich das zweite Beispiel an, das dieser Prozedur folgt.

  7. Stellen Sie die benutzerdefinierte Funktion auf dem SQL-Server bereit. Weitere Informationen finden Sie unter Gewusst wie: Bereitstellen von SQL Server-Projektelementen auf einem SQL-Server.

  8. Drücken Sie F5, um die benutzerdefinierte Funktion zu debuggen, indem Sie sie auf dem SQL-Server ausführen.

Beschreibung

Im folgenden Codebeispiel wird die benutzerdefinierte Skalarfunktion addTax erstellt, die eine Preisangabe als Parameter verwendet, die Mehrwertsteuer hinzufügt und den Preis einschließlich der Steuer zurückgibt.

Stellen Sie die Funktion nach ihrer Erstellung auf dem SQL-Server bereit. Weitere Informationen finden Sie unter Gewusst wie: Bereitstellen von SQL Server-Projektelementen auf einem 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;
    }
};

Beschreibung

Fügen Sie der Datei Test.sql (bzw. debug.sql in Visual C++) im Ordner TestScripts Ihres Projekts Code zum Testen der benutzerdefinierten Funktion hinzu. Verwenden Sie zum Testen dieser Funktion beispielsweise eine Abfrage wie "SELECT dbo.addTax(10)." Es sollte der Wert "10.86" zurückgegeben werden.

Code

SELECT dbo.addTax(10)

Siehe auch

Aufgaben

Gewusst wie: Erstellen eines SQL Server-Projekts

Gewusst wie: Erstellen und Ausführen einer gespeicherten CLR SQL Server-Prozedur

Gewusst wie: Erstellen und Ausführen eines CLR SQL Server-Triggers

Gewusst wie: Erstellen und Ausführen eines CLR SQL Server-Aggregats

Gewusst wie: Erstellen und Ausführen einer benutzerdefinierten CLR SQL Server-Funktion

Gewusst wie: Erstellen und Ausführen eines benutzerdefinierten CLR-SQL Server-Typs

Exemplarische Vorgehensweise: Erstellen einer gespeicherten Prozedur in verwaltetem Code

Gewusst wie: Debuggen einer gespeicherten Prozedur in SQL/CLR

Konzepte

Einführung in CLR-Integration für SQL Server (ADO.NET)

Vorteile von verwaltetem Code bei der Erstellung von Datenbankobjekten

Elementvorlagen für SQL Server-Projekte

Referenz

Attribute für SQL Server-Projekte und Datenbankobjekte

Weitere Ressourcen

Debuggen von SQL CLR-Datenbanken