Aracılığıyla paylaş


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

toplamak işlevleri (Transact-SQL)

Birden çok değer bir birleştirme işlemleri gerçekleştirir.COUNT, Topla, MIN ve Mak verilebilir.

Yapılandırma işlevleri

Yapılandırma ayarları hakkında bilgi döndüren skaler fonksiyonlar

Şifreleme işlevleri (Transact-SQL)

Şifreleme şifre çözme, dijital imzalama ve dijital imzaları doğrulama destekler.

Imleç işlevleri

Bir imleç durumu hakkında bilgi döndürür.

Tarih ve saat işlevleri

Tarih ve saat değerlerini değiştirin.

Matematik işlevleri

Trigonometrik geometrik ve diğer sayısal işlemleri gerçekleştirir.

Meta veriler işlevleri

Veritabanları ve veritabanı nesneleri, öznitelikleri hakkında bilgi döndürür.

Sıralama işlevleri

Bir bölümün her satır için bir derecelendirme değer döndüren nondeterministic fonksiyonlar

Satır kümesi işlevler (Transact-SQL)

Başvuru tablosu yerine kullanılabilecek satır kümeleri döndürmek bir Transact-SQL deyim.

Güvenlik işlevi

Kullanıcılar ve roller hakkında bilgi döndürür.

Dize işlevleri

Değiştir char, varchar, nchar, nvarchar, binary, ve varbinary Değerler.

Sistem işlevleri

Çalışan veya çeşitli sistem düzey seçenekleri ve nesnelerdeki bildirin.

Sistem istatistik işlevleri (Transact-SQL)

Performansı hakkında bilgi döndürür. SQL Server.

Metin ve resim işlevleri

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.