Aracılığıyla paylaş


clr kullanıcı tanımlı Aggregates gereksinimleri

Bir ortak dil çalışma zamanı (clr) derleme içindeki bir türü olarak kayıtlı bir kullanıcı tanımlı toplam işlev, gerekli toplu anlaşmayi uygulayan sürece.Bu anlaşma oluşan SqlUserDefinedAggregate öznitelik ve toplama anlaşma yöntemleri.Toplama anlaşma ara toplama durumunu kaydetmek için bir mekanizma ve dört yöntem oluşan yeni değerler ulaşıncaya kadar mekanizması içerir: Init, Accumulate, Merge, and Terminate.When you have met these requirements, you will be able to take full advantage of user-defined aggregates in Microsoft SQL Server.Bu konu aşağıdaki bölümleri oluşturma ve kullanıcı tanımlı toplamları ile nasıl çalışılacağı hakkında ek ayrıntılar sağlanmaktadır.Bir örnek için bkz: clr kullanıcı tanımlı toplama işlevleri çağırma.

SqlUserDefinedAggregate

Daha fazla bilgi için bkz: SqlUserDefinedAggregateAttribute.

Toplama yöntemleri

Kullanıcı tanımlı toplu aşağıdaki örnek yöntemleri desteklemelidir gibi sınıf kayıtlı.Sorgu işlemci toplama hesaplamak için kullandığı yöntemleri şunlardır:

Yöntemi

Sözdizimi

Açıklama

Init

public void Init();

Sorgu işlemci hesaplamasını toplama başlatmak için bu yöntem kullanır.Bu yöntem, sorgu işlemci toplama her grup için bir kez çağrılır.Sorgu işlemci aggregates birden çok grubun bilgisayar toplu sınıfın aynı örnek yeniden seçebilirsiniz.The Init method should perform any clean-up as necessary from previous uses of this instance, and enable it to re-start a new aggregate computation.

Accumulate

public void Accumulate ( input-type value[, input-type value, ...]);

One or more parameters representing the parameters of the function.input_type should be the managed SQL Server data type equivalent to the native SQL Server data type specified by input_sqltype in the CREATE AGGREGATE statement.Daha fazla bilgi için bkz: clr parametre verilerini eşleme.

Kullanıcı tanımlı türler için (UDTs), giriş türü udt türü ile aynıdır.Sorgu işlemci, toplu değerlerini ulaşıncaya kadar bu yöntem kullanır.Bu kez toplanan gruptaki her değer için çağrılır.Yalnızca arama sonra bu her zaman sorgu işlemci çağırır Init yöntem verilen toplam sınıf örneknde.Bu uygulama yöntem geçirilen bağımsız değişken değerinin saklanması yansıtacak şekilde örneknin durumu güncelleştirmeniz gerekir.

Merge

public void Merge( udagg_class value);

Bu yöntem, geçerli örnek toplu bu sınıfın başka bir örnekle birleştirmek için kullanılabilir.Sorgu işlemci bir toplama, birden fazla kısmi hesaplamaları birleştirmek için bu yöntem kullanır.

Terminate

public return_type Terminate();

Bu yöntem, toplu hesaplaması tamamlar ve sonucunu verir toplua.The return_type should be a managed SQL Server data type that is the managed equivalent of return_sqltype specified in the CREATE AGGREGATE statement.The return_type can also be a user-defined type.

Tablo değerli parametreleri

Tablo değerli parametreleri (TVPs), bir yordam veya işlev, içine geçirilen kullanıcı tanımlı tablo türleri, birden çok veri satırı sunucusuna iletmek için etkili bir yöntem sağlar.TVPs parametre dizileri için benzer bir işlevsellik sağlar, ancak daha fazla esneklik ve daha yakın tümleştirme sunar Transact-SQL.Ayrıca olası en iyi performansı sağlarlar.TVPs durumsa sunucuya azaltılmasına da yardımcı olur.Birden çok istek sunucuya göndermek yerine, gibi skaler parametreleri listesini veri sunucusuna bir tvp gönderilebilir.Kullanıcı tanımlı tablo türü bir yönetilen saklı yordam, iade edilmesi veya işlev içinde yürütmek için tablo değerli bir parametre olarak geçirilemez SQL Server işlem.Ayrıca, TVPs, bir içerik bağlantısı kapsam içinde kullanılamaz.Ancak, bir tvp ile SqlClient yönetilen saklı yordamları ve işlevleri de yürütme kullanılabilir SQL Server işlem, varsa onu kullanılan bir bağlantıda olan olmayan bir içerik bağlantısı.Yönetilen yordam veya işlev yürütülürken sunucuya bağlantı olabilir.TVPs hakkında daha fazla bilgi için bkz: Tablo değerli Parametreler (veritabanı altyapısı).