Toplam (Transact-sql) oluştur

Bir kullanıcı tanımlı toplama işlevi olan uygulama sınıfı bir derlemede tanımlanmış oluşturur .NET Framework. İçin Veritabanı Altyapısıuygulanması için toplama işlevini bağlamak .NET Frameworkuygulanmasını içeren derleme ilk örneği yüklenen gerekir SQL Servercreate assembly deyimi kullanarak.

[!NOT]

Varsayılan olarak, yeteneğini SQL Serverclr kodu kapalı çalıştırmaktır Oluşturmak, değiştirmek ve yönetilen kod modüllerinin başvuru veritabanı nesnelerini bırakın, ama bu modülleri kod örneği çalıştırılmaz SQL Serversürece clr seçeneği etkin kullanarak etkin sp_configure.

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

CREATE AGGREGATE [ schema_name . ] aggregate_name
        (@param_name <input_sqltype> 
        [ ,...n ] )
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 }

Bağımsız değişkenler

  • schema_name
    Kullanıcı tanımlı toplama işlevi ait olduğu şema addır.

  • aggregate_name
    Oluşturmak istediğiniz toplama işlevini addır.

  • @param_name
    Kullanıcı tanımlı toplama bir veya daha fazla parametreler. Toplama işlevi çalıştırıldığında bir parametre değeri kullanıcı tarafından sağlanmalıdır. Parametre adı kullanarak belirtmek bir "" oturum (
    @
    ) ilk karakteri olarak. Parametre adı kuralları uymanız gerekir tanımlayıcıları. İşlevi için yerel parametreleridir.

  • system_scalar_type
    Biri SQL Serversistem skalar veri türleri giriş parametresinin değeri veya değeri dönmek. Dışında kullanıcı tanımlı bir toplama için parametre olarak kullanılabilecek tüm skalar veri türleri text, ntext, ve image. Nonscalar türleri, gibi cursorve table, tarif edilemez.

  • udt_schema_name
    clr kullanıcı tanımlı türü ait olduğu şema addır. Belirtilmezse, Veritabanı Altyapısıbaşvuruları udt_type_nameaşağıdaki sırayla:

    • Native sql türü ad.

    • Geçerli kullanıcının geçerli veritabanındaki varsayılan şeması.

    • Dbo geçerli veritabanı şeması.

  • udt_type_name
    Önceden oluşturulmuş geçerli veritabanında bir kullanıcı tanımlı clr türü addır. Eğer udt_schema_namebelirtilmemiş, SQL Servertürüne ait geçerli kullanıcının şemaya varsayar.

  • assembly_name [ **.**class_name ]
    Kullanıcı tanımlı toplama işlevi ve isteğe bağlı olarak, şema adı ile bağlamak için derleme belirtir derleme ait olan ve kullanıcı tanımlı toplama uygulayan derleme içindeki sınıf adı. Derleme zaten veritabanında create assembly deyimi kullanılarak oluşturulmuş olması gerekir. class_namegeçerli olmalıdır SQL Servertanımlayıcısı ve maç derlemede bulunan bir sınıf adı. class_namead alanları, gibi C# sınıf yazmak için kullanılan programlama dili kullanıyorsa, bir ad alanıyla nitelenmiş ad olabilir. Eğer class_namebelirtilmemiş, SQL Serveraynı olduğunu varsayar aggregate_name.

Açıklamalar

Başvurulan derleme sınıfın assembly_nameve yöntemleri, kullanıcı tanımlı bir toplama işlevi örneği uygulamak için tüm gereksinimleri karşılamak SQL Server. Daha fazla bilgi için, bkz. clr kullanıcı tanımlı toplamları.

İzinler

create aggregate izni ve ayrıca dış ad yan tümcesinde belirtilen derleme başvurular izni gerektirir.

Örnekler

Aşağıdaki örnek bir StringUtilities.csproj örnek uygulama derlenmiş olduğunu varsayar. Daha fazla bilgi için, bkz. Dizesi yardımcı programı işlevleri örneği.

Toplam örnek oluşturur Concatenate. Önce toplam oluşturulan derleme StringUtilities.dllyerel veritabanında kayıtlı.

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\MSSQL11.MSSQLSERVER\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

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\MSSQL11.MSSQLSERVER\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

Ayrıca bkz.

Başvuru

Toplam (Transact-sql) bırak