Share via


Cómo: Crear y ejecutar una función definida por el usuario de SQL Server mediante la integración de Common Language Runtime

Para crear una función definida por el usuario de SQL, agregue una función definida por el usuario a un proyecto de base de datos de Common Language Runtime de SQL Server (CLR de SQL). Después de la implementación correcta, se puede llamar y ejecutar la función definida por el usuario.

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 base de datos CLR de SQL existente o cree uno nuevo. Para obtener más información, vea Cómo: Crear un proyecto para objetos de base de datos que usan la integración de Common Language Runtime de SQL Server.

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

  3. En el cuadro de diálogo Agregar nuevo elemento, seleccione Función definida por el usuario.

  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.

  6. 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.

    Nota

    Puede especificar otros scripts como script de depuración predeterminado. Para obtener más información, vea Cómo: Editar el script Test.sql para ejecutar objetos que usan la integración de Common Language Runtime de SQL Server.

  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 base de datos CLR de SQL en un servidor SQL Server.

    Nota importanteImportante

    SQL Server 2005 y SQL Server 2008 solo admiten proyectos de SQL Server compilados con las versiones 2.0, 3.0 ó 3.5 de .NET Framework. Si intenta implementar un proyecto de SQL Server en SQL Server 2005 o SQL Server 2008, aparece un error: Deploy error (SQL01268): .NET SqlClient Data Provider: Msg 6218, Level 16, State 3, Line 1 CREATE ASSEMBLY for assembly 'AssemblyName' failed because assembly 'AssemblyName' failed verification. Check if the referenced assemblies are up-to-date and trusted (for external_access or unsafe) to execute in the database (donde AssemblyName es el nombre del ensamblado que se implementa). Para obtener más información, vea Cómo: Crear un proyecto para objetos de base de datos que usan la integración de Common Language Runtime de SQL Server.

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

Descripción

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 base de datos CLR de SQL 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;
    }
}

Descripción

Agregue código para probar la función definida por el usuario al archivo Test.sql de la carpeta SecuenciasDePrueba de su 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 para objetos de base de datos que usan la integración de Common Language Runtime de SQL Server

Cómo: Crear y ejecutar un procedimiento almacenado de SQL Server mediante la integración de Common Language Runtime

Cómo: Crear y ejecutar un desencadenador de SQL Server mediante la integración de Common Language Runtime

Cómo: Crear y ejecutar un agregado de SQL Server mediante la integración de Common Language Runtime

Cómo: Crear y ejecutar un tipo definido por el usuario de SQL Server mediante la integración de Common Language Runtime

Tutorial: Crear un procedimiento almacenado en código administrado

Cómo: Depurar un procedimiento almacenado de SQL CLR

Referencia

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

Conceptos

Introducción a la integración de CLR y SQL Server (ADO.NET)

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

Crear objetos de SQL Server en código administrado

Otros recursos

SQL CLR Database Debugging