Saklı yordamları yeniden yazma işlevleri

Bu konuda, varolan bir saklı yordam mantığı kullanıcı tanımlı işlevler yeniden belirlemek nasıl açıklar.Örneğin, bir saklı yordam bir sorgudan doğrudan çağırmak isterseniz, kodu kullanıcı tanımlı bir işlev yeniden paketleyin.

Saklı yordam döndürür, genel olarak, tek, sonuç küme, tablo değerli işlev tanımlayın.Saklı yordam, skaler bir değer hesaplar, skaler işlev tanımlayın.

Tablo değerli işlevler için ölçüt

Saklı yordam karşılayıp, aşağıdaki ölçütleri bir tablo değerli işlev olarak yayımlanması için iyi bir adaydır şöyledir:

  • Mantığı tek bir deyim içinde deyim ancak bir görünüm yerine bir saklı yordam parametreleri gereksinimi nedeniyle yalnızca.Bu senaryo ile satır içi işlenebilir tablo değerli işlev.

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

  • Dinamik execute deyimleri için gerek yoktur

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

  • İçine yüklenecek olan ara sonuçlar oluşturmak için saklı yordam birincil amacı olan bir geçici tablo, hangi daha sonra sorgulanan bir deyim içinde.EKLE...exec deyimi, tablo değerli işlevler kullanılarak yazılabilir.Örneğin, aşağıdaki sıralama göz önünde bulundurun:

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

    The sp_getresults stored procedure can be rewritten as a table-valued function, for example fn_results(), which means the preceding statements can be rewritten as:

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

Genişletilmiş saklı yordamları clr kullanarak yeniden yazma

clr işlevleri genişletilmiş saklı yordamlar için daha güvenilir ve ölçeklenebilir bir alternatif sağlar.Birçok genişletilmiş saklı yordamları gerçekleştirmek zor içinde ifade etmek için bazı hesaplama görev Transact-SQL.Saklı yordamlar gibi yararları yukarıda belirtilen clr kullanılarak yazılmış.Web hizmeti yayımlanması bir clr tablo değerli işlev veya dosyası gibi bir dış kaynak erişerek sonuç kümeleri döndüren saklı yordamlar, genişletilmiş.Daha fazla bilgi için bkz: clr işlevler oluşturma.