Compartir a través de


Cómo: Crear y ejecutar una función CLR de servidor SQL Server definido por el usuario

Actualización: noviembre 2007

Cree una función SQL definida por el usuario agregando una función definida por el usuario a un proyecto SQL Server. Después de la implementación correcta, se puede llamar y ejecutar la función definida por el usuario.

Nota:

De forma predeterminada, la característica de integración de Common Language Runtime (CLR) está desactivada en Microsoft SQL Server y se debe habilitar con el fin de utilizar los elementos de los proyectos de SQL Server. Para habilitar la integración CLR, utilice la opción clr enabled del procedimiento almacenado sp_configure. Para obtener más información, vea Habilitación de la integración CLR.

Nota:

Es posible que su equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio incluidos en las instrucciones siguientes. La edición de Visual Studio que se tenga y la configuración que se utilice determinan estos elementos. Para obtener más información, vea Valores de configuración de Visual Studio.

Crear funciones definidas por el usuario de SQL Server

Para generar e implementar esta función con Visual Studio

  1. Abra un Proyecto de SQL Server existente o cree uno nuevo. Para obtener más información, vea Cómo: Crear un proyecto de SQL Server.

  2. En el menú Proyecto, elija Agregar nuevo elemento.

  3. Seleccione Función definida por el usuario en Agregar nuevo elemento (Cuadro de diálogo).

  4. Escriba un Nombre para la nueva función definida por el usuario.

  5. Agregue el código que se va a ejecutar cuando se ejecuta la función definida por el usuario. Vea el primer ejemplo incluido después de este procedimiento.

    Nota:

    Los ejemplos en C++ se deben compilar con la opción /clr:safe del compilador.

  6. Para Visual Basic y Visual C#, en el Explorador de soluciones, abra la carpeta SecuenciasDePrueba y haga doble clic en el archivo Test.sql para abrirlo y editarlo. Agregue el código que va a ejecutar la función definida por el usuario. Vea el segundo ejemplo incluido después de este procedimiento.

    Para Visual C++, en el Explorador de soluciones, haga doble clic en el archivo debug.sql para abrirlo y editarlo. Agregue el código que va a ejecutar la función definida por el usuario. Vea el segundo ejemplo incluido después de este procedimiento.

  7. Implemente la función definida por el usuario en SQL Server. Para obtener más información, vea Cómo: Implementar elementos de proyecto de SQL Server en un servidor SQL Server.

  8. Presione F5 para depurar la función definida por el usuario ejecutándola en SQL Server.

Description

El ejemplo de código siguiente crea una función escalar definida por el usuario denominada addTax que toma un importe de precio como parámetro, agrega los impuestos sobre ventas y devuelve el precio más el impuesto.

Después de crear la función, impleméntela en SQL Server. Para obtener más información, vea Cómo: Implementar elementos de proyecto de SQL Server en un servidor SQL Server

Código

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

Agregue el código para probar la función definida por el usuario al archivo Test.sql (debug.sql en Visual C++) en la carpeta SecuenciasDePrueba del proyecto. Por ejemplo, para probar esta función, utilice una consulta como "SELECT dbo.addTax(10)." Debe ver el valor devuelto "10.86."

Código

SELECT dbo.addTax(10)

Vea también

Tareas

Cómo: Crear un proyecto de SQL Server

Cómo: Crear y ejecutar un procedimiento CLR almacenado de SQL Server

Cómo: Crear y ejecutar un desencadenador CLR de SQL Server

Cómo: Crear y ejecutar un agregado CLR de SQL Server

Cómo: Crear y ejecutar una función CLR de servidor SQL Server definido por el usuario

Cómo: Crear y ejecutar un tipo CLR de servidor SQL Server definido por el usuario

Tutorial: Crear un procedimiento almacenado en código administrado

Cómo: Depurar un procedimiento almacenado de SQL CLR

Conceptos

Introduction to SQL Server CLR Integration (ADO.NET)

Ventajas de utilizar código administrado para crear objetos de base de datos

Plantillas de elementos para proyectos de SQL Server

Referencia

Atributos para proyectos de servidor SQL Server y objetos de base de datos

Otros recursos

Depuración de bases de datos de SQL CLR