Share via


Kullanıcı tanımlı işlevler

Gibi işlevlerin programlama dillerinde SQL Serverkullanıcı tanımlı işlevler vardır yordamları parametreleri kabul eder, karmaşık bir hesaplama gibi bir eylem gerçekleştirmek ve sonuç değeri olarak bu eylem. Dönüş değeri ya da tek bir sayısal değer ya da bir sonuç olabilir ayarlayın.

Bu Konuda

Kullanıcı tanımlı işlev yararları

İşlev Türleri

Yönergeleri

Geçerli bir işlev deyimleri

Şema bağlı işlevler

Parametreler belirtme

ilişkili Görevler

Kullanıcı tanımlı işlev yararları

Kullanıcı tanımlı işlevler kullanmanın yararları SQL Serverolan:

  • Modüler programlama sağlarlar.

    İşlevi bir kez oluşturma, veritabanında depolamak ve programınızda herhangi bir sayıda call it. Kullanıcı tanımlı işlevler, programın kaynak kodunu bağımsız olarak değiştirilebilir.

  • Daha hızlı yürütme sağlarlar.

    Saklı yordamlar, benzer Transact-SQLkullanıcı tanımlı işlevler derleme maliyeti azaltmak Transact-SQLplanları önbelleğe alma ve bunları tekrar yürütmeler için yeniden kod. Bu, kullanıcı tanımlı bir işlev reparsed ve reoptimized ile her kullanımdan kaynaklanan çok daha hızlı yürütme zamanlarda gerekmez anlamına gelir.

    clr işlevler üzerinde önemli performans avantajı sunan Transact-SQLişlevleri hesaplamalı görevleri, dize işleme ve iş mantığı. Transact-SQLişlevleri daha yoğun veri erişim mantığı için uygundur.

  • Bunlar ağ trafiğini azaltabilirsiniz.

    Bir tek skalar ifade ifade edilemeyen bazı karmaşık kısıtlaması temel verilere filtre işlemi bir fonksiyonu olarak ifade edilebilir. where yan tümcesinde azaltmak için çağrılan işlev olabilir ya da istemciye gönderilen satır.

[!NOT]

Transact-SQLkullanıcı tanımlı işlevleri sorgular, yalnızca tek bir iş parçacığı üzerinde (Seri yürütme planı) çalıştırılabilir.

Başa Dön bağlantısıyla kullanılan ok simgesi[Top]

İşlev Türleri

  • Skalar fonksiyon
    Kullanıcı tanımlı skalar işlevleri döndürür fıkrada tanımlanan türünün tek veri değerini döndürür. Satır içi skalar fonksiyon, orada hiçbir işlev gövdesi; skalar bir değer tek bir deyimi sonucudur. Çoklu deyimli skalar fonksiyon için fonksiyonun, tanımlı bir BEGIN...SON blok, bir dizi Transact-SQLtek değer döndüren deyimler. Dönüş türü dışındaki herhangi bir veri türü olabilir text, ntext, image, cursor, ve timestamp.

  • Tablo Valued işlevler
    Kullanıcı tanımlı tablo değerli işlevler dönüş bir tableveri türü. Tablo değerli bir satır içi işlevi için hiçbir işlev gövdesi yoktur; Tablo tek bir select deyimi sonuç kümesidir.

  • Sistem İşlevleri
    SQL Serversen-ebilmek kullanma çeşitli işlemleri gerçekleştirmek için birçok sistem işlevleri sağlar. Bunlar değiştirilemez. Daha fazla bilgi için bkz: Yerleşik İşlevler (Transact-SQL), Sistem işlevler (Transact-sql) saklı, ve Dinamik yönetimi görünümler ve işlevler (Transact-sql).

Başa Dön bağlantısıyla kullanılan ok simgesi[Top]

Yönergeleri

Transact-SQLiptal edilecek ve devam etmek için sonraki deyimi (örneğin, Tetikleyiciler veya saklı yordamlar) modülündeki neden hatalar farklı bir işlev içinde kabul edilir. İşlevler, böyle hatalar yürütme işlevinin durmasına neden. Bu da iptal işlevi çağıran deyimi neden olur.

Bir BEGIN deyimlerinde...SON blok, herhangi bir yan etkisi olamaz. Bir kapsamı dışında bir veritabanı tablosunun bir değişiklik gibi işlevi olan bir kaynağın durumunu kalıcı değişiklikler işlevi yan etkileri vardır. İşlev deyimleri tarafından yapılan tek değişiklik, nesnelere yerel imleçler veya değişkenler gibi bir fonksiyonu yerel değişikliklerdir. Veritabanı tabloları değişiklikleri, e-posta gönderme, bir katalog değiştirme girişimi ve bir sonuç yani kümesi oluşturma işlevi için yerel olmayan imleçler işlemleri kullanıcıya bir işlev yürütülemez eylemleri verilebilir.

[!NOT]

create FUNCTION deyimini yan etkilere karşı create FUNCTION deyimi kesilirken, bulunmayan kaynakları oluyorsa SQL Serverdeyimi yürütür. Ancak, SQL Servero çağrıldığında işlev yürütmüyor.

Sorguda belirtilen bir işlev aslında yürütülen kaç kez Doktoru tarafından oluşturulan yürütme planları arasında değişebilir. Bir örnek, bir alt sorgunun where yan tümcesinde çağrılan bir işlevdir. Alt sorgu ve işlevi yürütülene sayısı, Doktoru tarafından seçilen farklı erişim yolları ile değişebilir.

Başa Dön bağlantısıyla kullanılan ok simgesi[Top]

Geçerli bir işlev deyimleri

Bir işlev geçerli deyimleri türleri şunlardır:

  • declare deyimleri veri değişkenleri ve işlevi için yerel imleçler tanımlamak için kullanılabilir.

  • Skalar değerler ve tablo yerel değişkenleri atamak için atamaları nesneleri kullanma gibi bir fonksiyonu, yerel değerleri ayarlayın.

  • Bildirilen, yerel imleçler başvuru imleç işlemlerini açıldı, kapalı ve fonksiyon kaldırıldı. Veri istemciye döndürür GETIRME deyimleri izin verilmez. INTO yan kullanarak yerel değişkenler için değerler atayın yalnızca GETIRME deyimleri izin verilir.

  • Akış denetimi deyimleri dışında deneyin...İfadeler yakalamak.

  • select deyimleri içeren listeleri işlevi için yerel olan değişkenler için değerler atayın ifadeleri ile seçin.

  • update, INSERT ve delete deyimlerini işlevi için yerel tablo değişkenlerini değiştirme.

  • execute deyimlerinin genişletilmiş saklı yordam çağırma.

Yerleşik sistem işlevleri

Aşağıdaki nondeterministic yerleşik işlevleri Transact-sql kullanıcı tanımlı işlevler kullanılabilir.

CURRENT_TIMESTAMP

@@ MAX_CONNECTIONS

GET_TRANSMISSION_STATUS

@@ PACK_RECEIVED

GETDATE

@@ PACK_SENT

GETUTCDATE

@@ PACKET_ERRORS

@@ BAĞLANTILARI

@@ TIMETICKS

@@ CPU_BUSY

@@ TOTAL_ERRORS

@@ DBTS

@@ TOTAL_READ

@@ BOŞTA

@@ TOTAL_WRITE

@@ IO_BUSY

 

Aşağıdaki nondeterministic yerleşik işlevleri Transact-sql kullanıcı tanımlı işlevler kullanılamaz.

NEWID

RAND

NEWSEQUENTIALID

TEXTPTR

Deterministik ve nondeterministic yerleşik sistem işlevlerin listesi için bkz: Deterministik ve Nondeterministic işlevler.

Başa Dön bağlantısıyla kullanılan ok simgesi[Top]

Şemaya bağlı işlevleri

create FUNCTION işlev şema nesneleri, tablolar, görünümler ve diğer kullanıcı tanımlı işlevler gibi başvuran bağlar SCHEMABINDING yan destekler. Şemaya bağlı işlevi tarafından başvurulan herhangi bir nesnenin bırakma veya değiştirme girişimi başarısız olur.

SCHEMABINDING oluştur İŞLEVİNDE belirlemeden önce bu koşulların yerine getirilmesi gerekir:

  • Tüm görünümler ve kullanıcı tanımlı işlevler işlevi tarafından başvurulan şemaya bağlı olmalıdır.

  • İşlevi tarafından başvurulan tüm nesneleri işlevi aynı veritabanında bulunması gerekir. Bir bölümü veya iki bölümü adı kullanarak nesneleri başvurulmalıdır.

  • Tüm nesneleri (tablolar, görünümler ve kullanıcı tanımlı işlevler) işlevi başvurulan başvurular izninizin olması gerekir.

Şema Cilt payı kaldırmak için alter işlevini kullanabilirsiniz. alter FUNCTION deyimi WITH SCHEMABINDING belirtmeden işlevi yeniden tanımlamanız.

Başa Dön bağlantısıyla kullanılan ok simgesi[Top]

Parametreler belirtme

Kullanıcı tanımlı bir işlev sıfır veya daha fazla giriş parametrelerini alan ve skalar bir değer ya da bir tablo döndürür. Bir işlevi, en çok 1024 giriş parametreleri olabilir. Fonksiyonu parametre varsayılan değeri olduğunda, varsayılan değer almak için işlevi çağrılırken varsayılan anahtar belirtilmelidir. Bu davranış, parametrelerin varsayılan değerleri parametre ima hangi ihmal de varsayılan değer, kullanıcı tanımlı saklı yordamlar ile farklıdır. Kullanıcı tanımlı işlevler, çıkış parametreleri desteklemez.

Başa Dön bağlantısıyla kullanılan ok simgesi[Top]

ilişkili Görevler

Görev Açıklaması

Konu

Transact-sql kullanıcı tanımlı bir işlev oluşturmak nasıl açıklar.

Kullanıcı tanımlı işlevler (veritabanı altyapısı) oluşturma

Açıklar nasıl bir clr işlevi oluşturmak.

clr işlevler oluşturma

Kullanıcı tanımlı bir toplama işlevi oluşturma açıklanmaktadır

Kullanıcı tanımlı toplamları oluşturun

Transact-sql kullanıcı tanımlı bir işlev değiştirmek nasıl açıklar.

ModifyUser tanımlı işlevler

Kullanıcı tanımlı bir işlev silmek nasıl açıklar.

Kullanıcı tanımlı işlevler silme

Kullanıcı tanımlı bir işlev yürütme açıklar.

Kullanıcı tanımlı işlevler yürütmek

Kullanıcı tanımlı bir işlev yeniden yapılandırılacağını açıklar

Kullanıcı tanımlı işlevler yeniden adlandırma

Kullanıcı tanımlı işlevin tanımını görüntülemek açıklar.

Görünüm, kullanıcı tanımlı işlevler

Başa Dön bağlantısıyla kullanılan ok simgesi[Top]