Поделиться через


CREATE AGGREGATE (Transact-SQL)

Создает пользовательскую статистическую функцию, реализация которой определена в классе сборки платформы Microsoft .NET Framework. Чтобы компонент SQL Server 2005 Database Engine привязал статистическую функцию к ее реализации, содержащая реализацию сборка .NET Framework должна быть сначала передана в экземпляр SQL Server при помощи инструкции CREATE ASSEMBLY.

ms182741.note(ru-ru,SQL.90).gifПримечание.
По умолчанию возможность SQL Server запускать код CLR отключена. Можно создавать, изменять и удалять объекты базы данных, которые ссылаются на модули управляемого кода, но код в этих модулях не будет выполняться в экземпляре SQL Server, пока параметр clr enabled не будет включен при помощи хранимой процедуры sp_configure.

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

CREATE AGGREGATE [ schema_name . ] aggregate_name
        (@param_name <input_sqltype> )
RETURNS <return_sqltype>
EXTERNAL NAME assembly_name [ .class_name ]

<input_sqltype> ::=
        system_scalar_type | { [ udt_schema_name. ] udt_type_name }

<return_sqltype> ::=
        system_scalar_type | { [ udt_schema_name. ] udt_type_name }

Аргументы

  • schema_name
    Имя схемы, к которой принадлежит пользовательская статистическая функция.
  • aggregate_name
    Имя создаваемой статистической функции.
  • @param_name
    Параметр пользовательского статистического выражения. Значение параметра должно быть задано пользователем при выполнении статистической функции. Указывайте имя параметра с помощью знака (
    @
    ) в качестве первого символа. Имя параметра должно соответствовать правилам для идентификаторов. Параметры являются локальными для функции.
  • system_scalar_type
    Любой из системных скалярных типов данных SQL Server для хранения значения входного параметра или возвращаемого значения. В качестве аргумента пользовательского статистического выражения могут быть использованы все скалярные типы данных, кроме text, ntext и image. Не могут быть заданы нескалярные типы, такие как cursor и table.
  • udt_schema_name
    Имя схемы, к которой относится пользовательский тип данных среды CLR. Если этот аргумент отсутствует, компонент Database Engine ссылается на значение аргумента udt_type_name в таком порядке:

    • собственное пространство имен типов SQL;
    • схема по умолчанию текущего пользователя в текущей базе данных;
    • схема dbo текущей базы данных.
  • udt_type_name
    Название пользовательского типа среды CLR, созданного в текущей базе данных. Если аргумент udt_schema_name не указан, SQL Server предполагает, что тип принадлежит к схеме текущего пользователя.
  • assembly_name [ **.**class_name ]
    Указывает сборку, с которой связывается пользовательская статистическая функция и, при необходимости, имя схемы, к которой принадлежит сборка, и имя класса в сборке, реализующего пользовательскую статистическую функцию. Сборка уже должна быть создана в базе данных при помощи инструкции CREATE ASSEMBLY. Аргумент class_name должен быть правильным идентификатором SQL Server и совпадать с именем существующего в сборке класса. Аргумент class_name может быть именем, указанным в пространстве имен, если в языке программирования, использовавшемся для написания класса, применяются пространства имен, как, например, в C#. Если аргумент class_name не задан, SQL Server считает, что его значение равно значению аргумента aggregate_name.

Замечания

Класс сборки, указанной в аргументе assembly_name, и его методы должны соответствовать всем требованиям к реализации пользовательских статистических функций в экземпляре SQL Server. Дополнительные сведения см. в разделе CLR User-Defined Aggregates.

Разрешения

Требует разрешения CREATE AGGREGATE и разрешения REFERENCES для сборки, указанной в предложении EXTERNAL NAME.

Примеры

В следующем примере предполагается, что образцы компонента Database Engine SQL Server установлены на локальном компьютере в место по умолчанию, а образец приложения StringUtilities.csproj скомпилирован. Дополнительные сведения см. в разделе Образец String Utilities.

Пример создает статистическое выражение Concatenate. Перед созданием статистического выражения в локальной базе данных регистрируется сборка StringUtilities.dll.

USE AdventureWorks;
GO
DECLARE @SamplesPath nvarchar(1024)
-- You may have to modify the value of the this variable if you have
--installed the sample some location other than the default location.
SELECT @SamplesPath = REPLACE(physical_name, 'Microsoft SQL Server\MSSQL.1\MSSQL\DATA\master.mdf', 'Microsoft SQL Server\90\Samples\Engine\Programmability\CLR\') 
     FROM master.sys.database_files 
     WHERE name = 'master';
CREATE ASSEMBLY StringUtilities FROM @SamplesPath + 'StringUtilities\CS\StringUtilities\bin\debug\StringUtilities.dll'
WITH PERMISSION_SET=SAFE;
GO

CREATE AGGREGATE Concatenate(@input nvarchar(4000))
RETURNS nvarchar(4000)
EXTERNAL NAME [StringUtilities].[Microsoft.Samples.SqlServer.Concatenate];
GO

См. также

Справочник

DROP AGGREGATE (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005