Işlevler (Veritabanı Altyapısı)
SQL Server belirli işlemleri gerçekleştirmek için kullanılabilecek yerleşik işlevler sağlar.
Işlevleri kullanılan veya aşağıdaki yer:
Seçim listesi değeri veren bir deyim kullanan bir sorgu.
SELECT DB_NAME(); GO
Bir SELECT veya veri değiştirme, arama koşulu WHERE yan tümce (SELECT, INSERT, DELETE veya UPDATE) deyim için sorgu uygun satırları sınırlayın.
USE AdventureWorks; GO SELECT SalesOrderID, ProductID, OrderQty FROM Sales.SalesOrderDetail WHERE OrderQty = (SELECT MAX(OrderQty) FROM Sales.SalesOrderDetail); GO
Arama koşulu, WHERE yan tümce, bir görünümün görünüm dinamik hale getirmek için çalışma zamanında kullanıcı veya ortam ile uyumlu.
CREATE VIEW ShowMyEmploymentInfo AS SELECT FirstName, LastName FROM Person.Contact WHERE ContactID = SUSER_SID(); GO
Herhangi bir deyimdir.
CHECK kısıtlaması veya veri eklendiğinde, belirtilen değerleri aramak için bir tetikleyici.
CREATE TABLE SalesContacts (SalesRepID INT PRIMARY KEY CHECK (SalesRepID = SUSER_SID() ), ContactName VARCHAR(50) NULL, ContactPhone VARCHAR(13) NULL); GO
VARSAYıLAN kısıtlama veya tetiğin durumunda bir INSERT tarafından belirtilen bir değer girin.
CREATE TABLE SalesContacts ( SalesRepID INT PRIMARY KEY CHECK (SalesRepID = SUSER_SID() ), ContactName VARCHAR(50) NULL, ContactPhone VARCHAR(13) NULL, WhenCreated DATETIME DEFAULT GETDATE(), Creator INT DEFAULT SUSER_SID() ); GO
Işlevleri bile ayraçları belirtilen parametre olduğunda.Bunun istisnası VARSAYıLAN anahtar sözcüğüyle kullanılan parametresiz işlevlerdir.giriş giriş parametresiz işlevler parametreleri ele.VARSAYıLAN anahtar sözcük hakkında daha fazla bilgi için bkz: ALTER tablo (Transact-SQL) ve tablo (Transact-SQL) CREATE.
Bazen bir veritabanı, bilgisayar, oturum açma veya veritabanı kullanıcısı belirtmek için parametreler isteğe bağlıdır.Bunlar belirtilmezse, geçerli veritabanında, ana bilgisayar, oturum açma veya veritabanı kullanıcısı varsayılandır.
Işlevleri iç içe kullanılabilir.
İşlev Kategorileri
Aşağıdaki tablo kategorileri listeler SQL Server işlevler.
Işlev kategorisi |
Açıklama |
---|---|
Birden çok değer bir birleştirme işlemleri gerçekleştirir.COUNT, Topla, MIN ve Mak verilebilir. |
|
Yapılandırma ayarları hakkında bilgi döndüren skaler fonksiyonlar |
|
Şifreleme şifre çözme, dijital imzalama ve dijital imzaları doğrulama destekler. |
|
Bir imleç durumu hakkında bilgi döndürür. |
|
Tarih ve saat değerlerini değiştirin. |
|
Trigonometrik geometrik ve diğer sayısal işlemleri gerçekleştirir. |
|
Veritabanları ve veritabanı nesneleri, öznitelikleri hakkında bilgi döndürür. |
|
Bir bölümün her satır için bir derecelendirme değer döndüren nondeterministic fonksiyonlar |
|
Başvuru tablosu yerine kullanılabilecek satır kümeleri döndürmek bir Transact-SQL deyim. |
|
Kullanıcılar ve roller hakkında bilgi döndürür. |
|
Değiştir char, varchar, nchar, nvarchar, binary, ve varbinary Değerler. |
|
Çalışan veya çeşitli sistem düzey seçenekleri ve nesnelerdeki bildirin. |
|
Performansı hakkında bilgi döndürür. SQL Server. |
|
Değiştir text ve image Değerler. |
Deterministic ve Nondeterministic işlevler
Içinde SQL Server, işlevler, kesinlikle deterministic, deterministic veya nondeterministic olarak sınıflandırılır.
Bir işlevdir kesinlikle deterministic if, belirli bir küme giriş değerleri, işlev her zaman aynı sonuçlar verir.
Bir daha az tutabilen determinism kavramı, kullanıcı tanımlı işlevler için uygulanır.Kullanıcı tanımlı BIR işlev deterministic if, belirli bir küme giriş değerleri ve veritabanı durumunu işlevi her zaman aynı sonuçlar verir.Işlev tam belirli değil, veri erişim ise, bu anlamda deterministic olabilir.
Giriş değerleri aynı kümesiyle art arda çağrıldığında nondeterministic işlev farklı sonuçlar döndürebilir.For example, the function GETDATE() is nondeterministic.SQL Server puts restrictions on various classes of nondeterminism.Bu nedenle, nondeterministic işlevleri dikkatle kullanılmalıdır.
Yerleşik işlevler için determinism ve sıkı determinism aynıdır.Için Transact-SQL Kullanıcı tanımlı işlevler, sistem tanımını doğrular ve nondeterministic işlevleri tanımını engeller. Ancak, verilere erişme veya nonschema bağlı olan bir işlev kesinlikle deterministic nitelendirilmez.Ortak dil çalışma zamanı (CLR) işlevleri için işlev tanımları deterministic, belirttiğiniz veri erişimi ve sistem verilerini, işlevin özelliklerine erişmek ancak bu özellikleri sistem doğrulandı olmadığınızdan, işlevlerin her zaman kesinlikle deterministic dikkate alınmaz.
Determinism olmamasından bir işlev bu kullanılabilir sınırlayabilirsiniz.Yalnızca belirli işlevler çağrılabilir, dizin oluşturulmuş görünümler, dizinlenmiş bir hesaplanan sütunlar, kalıcı bir hesaplanan sütunlar veya tanımları Transact-SQL Kullanıcı tanımlı işlevler.
' ın katı determinism olmamasından bir işlev önemli performans iyileştirmeleri engelleyebilirsiniz.Belirli bir planı yeniden sipariş adımları ölçülü doğruluğu korumak için atlanır.Ayrıca, numarası, sipariş ve zamanlama yapılan kullanıcı tanımlı işlevler, uygulama bağımlı olur.Üzerinde bu çağırma semantik kullanır.Sabit nondeterministic built-ins S_SAYı_ÜRET çalışma zamanı ve GETDATE ailesi sayılmazsa, seçilen plan numarası, sipariş ve çağrıları zamanlamasına bağlıdır.
En iyi yöntem önerileri
Önerilir, mümkün olduğunda aşağıdaki yönergeleri izleyerek:
1.Write strictly deterministic functions when you have a choice.Özellikle, olun, Transact-SQL işlevler, şemaya bağlı.
2.Limit uses of nondeterministic functions to outermost select lists.
3.Do not use nondeterministic functions in performance-critical queries.
4.Do not rely on the number, order, or timing of calls, because these can be implementation-dependent.
Daha fazla bilgi için bkz:Deterministic ve Nondeterministic işlevler.
See Also