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
Öffnen Sie ein vorhandenes SQL Server-Projekt, oder erstellen Sie ein neues. Weitere Informationen finden Sie unter Gewusst wie: Erstellen eines SQL Server-Projekts.
Wählen Sie im Menü Projekt die Option Neues Element hinzufügen aus.
Wählen Sie im Dialogfeld "Neues Element hinzufügen" die Option Benutzerdefinierte Funktion aus.
Geben Sie einen Namen für die neue benutzerdefinierte Funktion ein.
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.
Ö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.
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.
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