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
Aprire un Progetto SQL Server esistente o crearne uno nuovo. Per ulteriori informazioni, vedere Procedura: creare un progetto SQL Server.
Scegliere Aggiungi nuovo elemento dal menu Progetto.
Selezionare Funzione definita dall'utente nella Finestra di dialogo Aggiungi nuovo elemento.
Nella casella Nome digitare un nome per la nuova funzione definita dall'utente.
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.
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.
Distribuire la funzione definita dall'utente in SQL Server. Per ulteriori informazioni, vedere Procedura: distribuire elementi del progetto SQL Server su SQL Server.
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