Kullanıcı tanımlı işlevler (Veritabanı Altyapısı) oluşturma
Kullanıcı tanımlı işlevler, ALTER işlev ifadesini kullanarak değiştirilebilir ve DROP işlev ifadesini kullanarak CREATE işlev ifadesini kullanarak oluşturulur.Her tam kullanıcı tanımlı işlev adı ( schema_name.function_name) benzersiz olması gerekir.
Yönergeler
Transact-SQL Sonraki deyim (örneğin, tetikleyici veya saklı yordam) modülü ile bir deyim iptal edilmesi ve devam etmek neden hatalar farklı bir işlev içinde kabul edilir.Bu tür hatalar yürütülmesini işlev s, neden işlev durdurmak için.Bu iptal işlev çağıran deyim de neden olur.
Herhangi bir yan etkileri ifadeleri BEGIN... END blok içinde olamaz.İşlev yan etkileri kapsam dışında bir veritabanı tablosunun bir değişiklik gibi işlev olan bir kaynağın durumunu kalıcı değişiklikler var.İşlev ifadelerine göre yapılan değişiklikler yalnızca yerel imleç veya değişken işlev yerel nesneleri değişiklikler var.Veritabanı tablolarına yapılan değişiklikler, e-posta gönderme, bir katalog değişiklik çalışıyor ve bir sonuç kümesi olan oluşturma işlev için yerel olmayan bir imleç işlemlerini kullanıcıya verilen bir işlevde gerçekleştirilen eylemleri verilebilir.
Not
CREATE işlev ifadesini veren kaynaklar, yok, CREATE işlev ifadesini verildiği, karşı yan etkileriSQL Serveryürütür deyim.Bununla birlikte,SQL Serverçağrıldığında, işlev çalıştırmak.
Sorguda belirtilen bir işlev aslında yürütülen sayısı, en iyi duruma getiricisi tarafından oluşturulan yürütme planları arasında değişebilir.Örnek WHERE alt sorgu tarafından çağrılan bir işlevi olan yan tümce.Farklı erişim yolları en iyi duruma getiricisi tarafından seçilmiş olan alt sorgu ve işlev yürütülene sayısı değişebilir.
Bir işlev, geçerli ifadeler
Geçerli bir işlev deyimi türleri şunlardır:
Veri değişkenleri ve imleç için yerel olarak tanımlamak için ifadeleri kullanılabilir BİLDİRMEK işlev.
skaler değerler ve tablo yerel değişkenleri atama atamalar nesnelere işlev kullanma gibi yerel değerler küme.
Bildirilen, yerel imleç başvuru imleç işlemlerini açık, kapalı ve işlev ayırmanın.Veri istemciye geri getirme ifadeleri izin verilmez.INTO yan tümcesini kullanarak, yerel değişkenler için değerler atayın yalnızca getirme ifadeleri izin verilir.
Akış denetimi deyimleri TRY... CATCH deyimi dışında.
SELECT deyimi içeren listeleri ile yerel değişkenler için değerler atayın ifadeleri seçin işlev.
UPDATE, INSERT ve DELETE deyimlerini, işlevin yerel Tablo değişkenlerini değiştirme.
genişletilmiş saklı yordam çağıran deyimi yürütmek.
Yerleşik sistem işlevleri
Aşağıdaki nondeterministic yerleşik işlevler, 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 |
|
Transact-SQL kullanıcı tanımlı işlevleri. aşağıdaki nondeterministic yerleşik işlevler kullanılamaz
NEWID |
S_SAYI_ÜRET |
NEWSEQUENTIALID |
textptr |
Belirli ve nondeterministic yerleşik sistem işlevlerin listesini görmek içinDeterministic ve Nondeterministic işlevler.
Şema bağlı İşlevler
CREATE işlev işlev tüm nesneler, tablolar, görünümler ve diğer kullanıcı tanımlı işlevler gibi başvurduğu şemasını bağlar SCHEMABINDING yan tümce destekler.Şemaya bağlı işlev kullanılarak başvurulan herhangi bir nesne doğrudan veya girişimi başarısız olur.
SCHEMABINDING CREATE işlev belirlemeden önce aşağıdaki koşulların karşılanması gerekir:
Tüm görünümleri ve kullanıcı tanımlı işlevler işlev tarafından başvurulan şemaya bağlı olması gerekir.
İşlev tarafından başvurulan tüm nesneleri işlev aynı veritabanında olması gerekir.Bir parça veya iki parça adlarını kullanarak nesnelerin başvuru gerekir.
Başvurulan işlev tüm nesnelerin (tablolar, görünümler ve kullanıcı tanımlı işlevler) başvurular izninizin olması gerekir.
Şema cilt payı kaldırmak için ALTER işlev kullanabilirsiniz.ALTER işlev ifadesini ile SCHEMABINDING belirtmeden işlevini yeniden tanımlamanız.
Parametreleri belirleme
Kullanıcı tanımlı bir işlev, sıfır veya daha çok giriş parametresi alır ve skaler bir değer veya bir tablo döndürür.En çok 1024'giriş parametresi bir işlev olabilir.Bir işlev parametresi varsayılan bir değer varsa, varsayılan değer işlevi çağrılırken DEFAULT anahtar belirtilmelidir.Bu davranış, hangi atlama parametre de varsayılan değer anlaşılacağı saklı yordamlar kullanıcı tarafından tanımlanan varsayılan değerler parametrelerle farklıdır.Çıkış parametreleri kullanıcı tanımlı işlevleri desteklemez.