Практическое руководство. Создание и запуск пользовательской функции SQL Server при помощи интеграции со средой CLR

Создайте пользовательскую функцию SQL, добавив Пользовательская функция в проект базы данных SQL Server со средой CLR. После успешного развертывания пользовательские функции можно вызывать и выполнять.

Примечание

На вашем компьютере названия некоторых элементов интерфейса пользователя Visual Studio или их расположение могут отличаться от указанных в нижеследующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio.

Создание пользовательских функций в СУБД SQL Server

Чтобы создать и развернуть эту функцию, используя Visual Studio:

  1. Откройте существующий Проект базы данных SQL CLR или создайте новый. Дополнительные сведения см. в разделе Практическое руководство. Создание проекта для объектов базы данных, использующих интеграцию SQL Server со средой CLR.

  2. В меню Проект выберите команду Добавить новый элемент.

  3. В диалоговом окне Добавление нового элемента выберите Пользовательская функция.

  4. Введите Имя для новой пользовательской функции.

  5. Добавьте код для выполнения при запуске пользовательской функции. Ознакомьтесь с первым примером, следующим за этой процедурой.

  6. В окне Обозреватель решений откройте папку TestScripts и дважды щелкните файл Test.sql, чтобы открыть его для редактирования. Добавьте код для выполнения пользовательской функции. Ознакомьтесь со вторым примером, следующим за этой процедурой.

    Примечание

    В качестве скрипта отладки по умолчанию можно указать другие скрипты.Дополнительные сведения см. в разделе Практическое руководство. Изменение скрипта Test.sql для запуска объектов, использующих интеграцию SQL Server со средой CLR.

  7. Развертывание пользовательской функции на SQL Server. Дополнительные сведения см. в разделе Практическое руководство. Развертывание элементов проекта базы данных SQL в среде CLR на сервере SQL Server.

    Важно!

    SQL Server 2005 и SQL Server 2008 поддерживают только проекты SQL Server, созданные с использованием версий 2.0, 3.0 и 3.5 платформы .NET Framework.При попытке развертывания проекта SQL Server на SQL Server 2005 или SQL Server 2008 появляется сообщение об ошибке: 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 (где AssemblyName — имя развертываемой сборки).Дополнительные сведения см. в разделе Практическое руководство. Создание проекта для объектов базы данных, использующих интеграцию SQL Server со средой CLR.

  8. Нажмите клавишу F5 для отладки определяемой пользовательской функции, путем выполнения ее на SQL Server.

Описание

В следующем коде создается пользовательская скалярная функция с именем addTax, которая принимает цену в качестве параметра, добавляет налог с продаж и возвращает сумму цены и налога.

После создания функции разверните ее на SQL Server. Дополнительные сведения см. в разделе Практическое руководство. Развертывание элементов проекта базы данных SQL в среде CLR на сервере SQL Server.

Код

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

Описание

Добавьте код для проверки пользовательской функции с помощью файла Test.sql в папке TestScripts в проекте. Например, чтобы проверить эту функцию, используйте запрос "SELECT dbo.addTax(10)". Вы увидите возвращаемое значение "10,86".

Код

SELECT dbo.addTax(10)

См. также

Задачи

Практическое руководство. Создание проекта для объектов базы данных, использующих интеграцию SQL Server со средой CLR

Практическое руководство. Создание и запуск хранимой процедуры SQL Server при помощи интеграции со средой CLR

Практическое руководство. Создание и запуск триггера SQL Server при помощи интеграции со средой CLR

Практическое руководство. Создание и запуск статистического выражения SQL Server при помощи интеграции со средой CLR

Практическое руководство. Создание и запуск пользовательского типа SQL Server при помощи интеграции со средой CLR

Пошаговое руководство. Создание хранимой процедуры в управляемом коде

Практическое руководство. Отладка хранимой процедуры SQL CLR

Ссылки

Атрибуты проектов баз данных SQL в среде CLR и объектов баз данных

Основные понятия

Введение в интеграцию SQL Server со средой CLR (ADO.NET)

Преимущества использования управляемого кода для создания объектов баз данных

Создание объектов SQL Server в управляемом коде

Другие ресурсы

SQL CLR Database Debugging