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

Обновлен: Ноябрь 2007

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

w2kae45k.alert_note(ru-ru,VS.90).gifПримечание.

Средства интеграции Microsoft SQL Server среды выполнения языка (CLR) по умолчанию отключены и должны быть включены для использования элементов проекта SQL Server. Для включения интеграции со средой CLR используйте параметр clr enabled хранимой процедуры sp_configure. Дополнительные сведения см. в разделе Включение интеграции со средой CLR.

w2kae45k.alert_note(ru-ru,VS.90).gifПримечание.

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

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

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

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

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

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

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

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

    w2kae45k.alert_note(ru-ru,VS.90).gifПримечание.

    Примеры C++ должны быть скомпилированы с параметром компилятора /clr:safe.

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

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

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

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

Описание

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

После создания функции разверните ее на SQL Server. Дополнительные сведения см. в разделе Практическое руководство. Развертывание элементов проекта SQL Server на сервере 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;
    }
}
#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;
    }
};

Описание

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

Код

SELECT dbo.addTax(10)

См. также

Задачи

Практическое руководство. Создание проекта SQL Server

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

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

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

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

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

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

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

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

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

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

Шаблоны элементов для проектов SQL Server

Ссылки

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

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

Отладка баз данных SQL в среде CLR