Condividi tramite


Procedura: creare ed eseguire una funzione CLR definita dall'utente di SQL Server

Aggiornamento: novembre 2007

Creare una funzione definita dall'utente SQL aggiungendo una Funzione definita dall'utente a un progetto SQL Server. Al termine di una corretta distribuzione, è possibile chiamare ed eseguire la funzione definita dall'utente.

Nota:

Per impostazione predefinita, in Microsoft SQL Server la funzionalità di integrazione di Common Language Runtime (CLR) è disattivata e deve essere attivata per poter utilizzare gli elementi del progetto SQL Server. Per attivare la funzionalità di integrazione di CLR, utilizzare l'opzione clr enabled della stored procedure sp_configure. Per ulteriori informazioni, vedere Attivazione dell'integrazione CLR.

Nota:

Nel computer in uso è possibile che vengano visualizzati nomi o percorsi diversi per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi. Per ulteriori informazioni vedere Impostazioni di Visual Studio.

Creazione di funzioni definite dall'utente di SQL Server

Per compilare e distribuire questa funzione mediante Visual Studio

  1. Aprire un Progetto SQL Server esistente o crearne uno nuovo. Per ulteriori informazioni, vedere Procedura: creare un progetto SQL Server.

  2. Scegliere Aggiungi nuovo elemento dal menu Progetto.

  3. Selezionare Funzione definita dall'utente nella Finestra di dialogo Aggiungi nuovo elemento.

  4. Nella casella Nome digitare un nome per la nuova funzione definita dall'utente.

  5. Aggiungere il codice da eseguire quando viene eseguita la funzione definita dall'utente. Vedere il primo esempio che segue questa procedura.

    Nota:

    Gli esempi di C++ devono essere compilati con l'opzione del compilatore /clr:safe.

  6. Per Visual Basic e Visual C#, in Esplora soluzioni aprire la cartella Script di test e fare doppio clic sul file Test.sql per aprirlo e modificarlo. Aggiungere il codice per eseguire la funzione definita dall'utente. Vedere il secondo esempio che segue questa procedura.

    Per Visual C++, in Esplora soluzioni fare doppio clic sul file debug.sql per aprirlo e modificarlo. Aggiungere il codice per eseguire la funzione definita dall'utente. Vedere il secondo esempio che segue questa procedura.

  7. Distribuire la funzione definita dall'utente in SQL Server. Per ulteriori informazioni, vedere Procedura: distribuire elementi del progetto SQL Server su SQL Server.

  8. Premere F5 per effettuare il debug della funzione definita dall'utente mediante l'esecuzione in SQL Server.

Descrizione

Nell'esempio che segue viene creata una funzione scalare definita dall'utente denominata addTax che accetta come parametro un prezzo, aggiunge l'imposta sul fatturato e restituisce il prezzo e l'imposta.

Dopo aver creato la funzione, distribuirla in SQL Server. Per ulteriori informazioni, vedere Procedura: distribuire elementi del progetto SQL Server su SQL Server.

Codice

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;
    }
};

Descrizione

Aggiungere il codice per verificare la funzione definita dall'utente nel file Test.sql (debug.sql in Visual C++) presente nella cartella Script di test del progetto. Ad esempio, per verificare questa funzione, utilizzare una query, quale "SELECT dbo.addTax(10)". Il valore restituito dovrebbe essere "10.86".

Codice

SELECT dbo.addTax(10)

Vedere anche

Attività

Procedura: creare un progetto SQL Server

Procedura: creare ed eseguire una stored procedure CLR di SQL Server

Procedura: creare ed eseguire un trigger CLR di SQL Server

Procedura: creare ed eseguire un aggregato CLR di SQL Server

Procedura: creare ed eseguire una funzione CLR definita dall'utente di SQL Server

Procedura: creare ed eseguire un tipo CLR definito dall'utente di SQL Server

Procedura dettagliata: creazione di una stored procedure nel codice gestito

Procedura: eseguire il debug di una stored procedure CLR SQL

Concetti

Introduzione all'integrazione con CLR di SQL Server (ADO.NET)

Vantaggi dell'utilizzo di codice gestito per creare oggetti di database

Modelli di elementi per progetti SQL Server

Riferimenti

Attributi per oggetti di database e progetti SQL Server

Altre risorse

Esecuzione del debug di database CLR SQL