Kullanıcı tanımlı işlevi temel kavramları
Like functions in programming languages, Microsoft SQL Server user-defined functions are routines that accept parameters, perform an action, such as a complex calculation, and return the result of that action as a value.Dönüş değeri, skaler skaler değer olabilir veya bir sonuç küme.
Kullanıcı tanımlı işlev yararları
Kullanıcı tanımlı işlevler kullanmanın yararları SQL Server olan:
Modüler programlama sağlarlar.
Bir kez bir işlev oluşturun, veritabanında depolamak ve onu kaç kez programınızda çağrısı.Kullanıcı tanımlı işlevler, program kaynak kodunu bağımsız olarak değiştirilebilir.
Daha hızlı bir çalıştırma sağlarlar.
Saklı yordamlar, benzer Transact-SQL kullanıcı tanımlı işlevler derleme maliyeti azaltmak Transact-SQL kod planları önbelleğe alıp bunları yinelenen yürütmeler için yeniden kullanmaBu kullanıcı tanımlı gelir işlev reparsed ve reoptimized çok daha hızlı yürütme zamanları ile sonuçlanan her kullanımı gerekli değildir.
CLR functions offer significant performance advantage over Transact-SQL functions for computational tasks, string manipulation, and business logic.Transact-SQL functions are better suited for data-access intensive logic.
Bunlar, ağ trafiğini azaltabilirsiniz.
skaler skaler ifade ifade edilemeyen bazı karmaşık kısıtlaması temel verilere filtre işlem bir işlev olarak ifade edilebilir.işlev sonra çağrıldığında numarasını veya gönderilen satırları azaltmak için where yan tümce tümce tümcesinde istemci.
Not
Transact-SQL kullanıcı tanımlı işlevler sorgularda, yalnızca tek bir iş parçacığı üzerinde (seri yürütme planı) çalıştırılabilir.
Kullanıcı tanımlı bir işlev bileşenleri
Kullanıcı tanımlı işlevler yazılabilir Transact-SQL, ya da herhangi.net programlama dili.Kullanma hakkında daha fazla bilgi için.net işlevleri dillerde Bkz: clr kullanıcı tanımlı işlevler.
Tüm kullanıcı tanımlı işlevler aynı iki parçalı yapı vardır: bir başlık ve gövde.işlev sıfır veya daha çok giriş parametresi alır ve skaler bir değer veya bir tablo döndürür.
Üstbilgi tanımlar:
İsteğe bağlı şema veya sahibinin adı işlev adı
Parametre adı ve veri türü giriş
Giriş parametresi uygulanabilir seçenekleri
Parametrenin veri türünü ve isteğe bağlı ad döndürür
Dönüş parametresi uygulanabilir seçenekleri
Gerçekleştirmek için işlev, gövde eylem veya mantığını tanımlar.Ya da içerir:
Bir veya daha fazla Transact-SQL deyimlerini işlev mantığı gerçekleştirme
Başvuru için bir.net derleme
Basit bir aşağıdaki örnekte gösterildiği Transact-SQL kullanıcı tanımlı işlev işlevini ana bileşenleri tanımlar veişlev sağlanan tarih olarak değerlendirilir ve bu tarihten bir hafta içindeki konumunu belirleme değerini döndürür.
IF OBJECT_ID(N'dbo.GetWeekDay', N'FN') IS NOT NULL
DROP FUNCTION dbo.GetWeekDay;
GO
CREATE FUNCTION dbo.GetWeekDay -- function name
(@Date datetime) -- input parameter name and data type
RETURNS int -- return parameter data type
AS
BEGIN -- begin body definition
RETURN DATEPART (weekday, @Date) -- action performed
END;
GO
Aşağıdaki örnekte kullanılan işlev gösterir bir Transact-SQL deyim.
SELECT dbo.GetWeekDay(CONVERT(DATETIME,'20020201',101)) AS DayOfWeek;
GO
Sonuç kümesi buradadır.
DayOfWeek
---------
6
(1 row(s) affected)