Aracılığıyla paylaş


Saklı yordamları, işlevleri yeniden yazma

Bu konu, var olan saklı yordam mantığı, yeniden yazma kullanıcı tanımlı işlevler çalıştırılıp çalıştırılmayacağını açıklar.Örneğin, saklı yordam bir sorgudan doğrudan çağırmak, kullanıcı tanımlı bir işlev yeniden paketlemek kodu.

Genel, saklı yordam dönerse, tek sonuç küme, bir tablo değerli işlev tanımlayın.Saklı yordam, skaler bir değer hesaplar, bir skaler tanımlayın işlev.

Tablo biçiminde işlevler için ölçütler

saklı yordam karşılaması, aşağıdaki ölçütleri tablo değerli işlev olarak yeniden için iyi bir aday şöyledir:

  • Mantık tek bir SELECT deyiminde deyim ancak bir görünüm yerine bir saklı yordam parametreleri gereksinimini nedeniyle.Bu senaryo, bir satır içi ile işlenebilir tablo değerli işlev.

  • saklı yordam güncelleştirme işlemleri dışında için Tablo değişkenlerini gerçekleştirmez.

  • Dinamik yürütmek deyimlerinin gerek yoktur.

  • Saklı yordam, bir sonuç kümesi verir.

  • Geçici bir tabloya bir deyim içinde daha sonra sorgulanan yüklenecek olan ara sonuçlar oluşturmak için birincil amacı, saklı yordam olan.Tablo değerli işlevler'i kullanarak, INSERT... EXEC deyimleri yazılabilir.Örneğin, aşağıdaki işlem sırasını göz önünde bulundurun:

    INSERT #temp EXEC sp_getresults
    SELECT ...
    FROM #temp, t1
    WHERE ...
    

    The sp_getresults saklı yordam can be rewritten as a tablo-valued işlev, for example fn_results(), which means the preceding statements can be rewritten as:

    INSERT #temp
    SELECT ...
    FROM fn_results(), t1
    WHERE ...
    

CLR kullanılarak genişletilmiş saklı yordamları yeniden yazma

CLR işlevlerinin genişletilmiş saklı yordamlar daha güvenilir ve ölçeklenebilir bir alternatif sağlar.Birçok genişletilmiş saklı yordamlar daha olarak ifade etmek için bazı bilgisayar görevine gerçekleştir Transact-SQL. Yararları, yukarıda verilen CLR kullanarak bu tür saklı yordamlar yeniden.Ayrıca, Web hizmet CLR tablo değerli işlev kullanarak yeniden ya da bir dış kaynak dosyası gibi erişerek sonuç kümeleri döndüren saklı yordamlar genişletildi.Daha fazla bilgi için bkz:CLR işlevler oluşturma.