Aracılığıyla paylaş


Kullanıcı tanımlı işlevler (Veritabanı Altyapısı) çalıştırma

Kullanıcı tanımlı işlevler, sorgularda veya diğer ifadeleri veya hesaplanan sütunlar gibi deyimlerde ya da dize ve deyimleri çağrılabilir.Tek değerli işlevler, yürütmek deyim kullanılarak çalıştırılabilir.

skaler bir değer iade, kullanıcı tanımlı işlevler çağırma

Aynı veri türünde skaler bir ifade içinde izin verilen herhangi bir skaler bir değer döndüren kullanıcı tanımlı bir işlev çağırabilir Transact-SQL ifadeler. skaler-fonksiyonunun iki bölümü adı kullanarak en az değerli işlevler çağrılması gerekir.Çok parçalı adları hakkında daha fazla bilgi için bkz: Transact-SQL sözdizimi kuralları (Transact-SQL).

Sorguları

skaler değer döndüren kullanıcı tanımlı işlevler, bu konumlarda izin verilir:

  • Gibi bir expression içinde select_list bir deyim:

    USE AdventureWorks;
    GO
    SELECT ProductID, ListPrice, dbo.ufnGetProductDealerPrice(ProductID, StartDate) AS DealerPrice,
        StartDate, EndDate
    FROM Production.ProductListPriceHistory
    WHERE ListPrice > .0000
    ORDER BY ProductID, StartDate;
    GO
    
  • Gibi bir expression veya string_expression bir WHERE veya yan tümce yüklemi HAVING:

    USE AdventureWorks;
    GO
    SELECT ProductID, ListPrice, StartDate, EndDate
    FROM Production.ProductListPriceHistory
    WHERE dbo.ufnGetProductDealerPrice(ProductID, StartDate) > .0000
    ORDER BY ProductID, StartDate;
    GO
    
  • Gibi bir group_by_expression bir GROUP BY, yan tümce.

  • Gibi bir order_by_expression ORDER BY yan tümce içinde.

  • Gibi bir expression küme içindeki yan tümce içinde bir UPDATE deyim:

    USE AdventureWorks;
    GO
    UPDATE Production.ProductListPriceHistory
    SET ListPrice = dbo.ufnGetProductDealerPrice(ProductID, StartDate)
    WHERE ProductID > 900;
    GO
    
  • Gibi bir expression INSERT deyim VALUES yan tümcesinde:

    Bu konumda başvurulan kullanıcı tanımlı işlevler, mantıksal olarak satır başına saat çalıştırılır.

CHECK kısıtlamaları

Işlev başvurusu sütunlar yalnızca tablo veya sabitler geçirilen bağımsız değişkeni değerleri, skaler değer döndüren kullanıcı tanımlı işlevler CHECK kısıtlamaları çağrılabilir.Her sorgu işlemcisi kısıtlamayı denetler, query processor çağırır işlev bağımsız değişkeni değerleriyle denetlenen etkin satırı ile ilişkili.Sahibi bir tablo de, bir CHECK kısıtlaması tarafından başlatılan kullanıcı tanımlı fonksiyonun sahibi olmalıdır tablo.

DEFAULT tanımları

Kullanıcı tanımlı bir işlev olarak çağrılabilir constant_expression VARSAYıLAN, bu işleve bağımsız değişken değerlerinin tanımları sabitler yalnızca içerir. Sahibi tablo üzerinde VARSAYıLAN bir tanım olarak başlatılan kullanıcı tanımlı fonksiyonun sahibi olması gereken tablo.

Hesaplanan sütunlar

Bağımsız değişken değerleri tablo veya sabitler işlev başvuru yalnızca sütun aktarılırsa işlevleri tarafından hesaplanan sütunlar çağrılabilir.Ayrıca, tablonun sahibi tablodaki hesaplanan sütun tarafından başlatılan kullanıcı tanımlı fonksiyonun sahibi olması gerekir.

Atama işletmenleri

(Atama) işleçlerileft_operand = right_operand) doğru işlenen belirtilen ifade, skaler değer döndüren kullanıcı tanımlı işlevler çağırabilirsiniz.

Akış denetimi deyimleri

skaler değer döndüren kullanıcı tanımlı işlevlerBoole ifadelerinde, akış denetimi deyimleri tarafından çağrılabilir.

durum deyimler

durum ifadelerin herhangi bir skaler değer döndüren kullanıcı tanımlı işlevler çağrılabilir.

YAZDıRMA deyimleri

Bir karakter dizesi döndüren kullanıcı tanımlı işlevler olarak çağrılabilen string_expr PRINT ifadeleri ifade.

Işlevler ve saklı yordamlar

  • Işlev bağımsız değişkenleri, skaler değer döndüren kullanıcı tanımlı bir işlev başvuru da olabilir.

  • return integer_expression tablolarda, saklı yordamlar, bir tamsayı olarak döndüren kullanıcı tanımlı işlevler başlatabileceğiniz integer_expression.

  • return return_type_spec Kullanıcı tanımlı işlevleri, deyimleri, skaler veri türü gibi döndüren kullanıcı tanımlı işlevler başlatabileceğiniz return_type_spec, sağlanan, başlatılan kullanıcı tanımlı işlev tarafından döndürülen değeri çağırma işlevi dönen veri türüne örtülü dönüştürülebilir.

Kullanıcı tanımlı skaler değer iade, işlevler'i çalıştırma

Yapabilecekleriniz yürütmek olarak saklı yordamlar aynı şekilde skaler değer döndüren kullanıcı tanımlı işlevler.skaler değer döndüren kullanıcı tanımlı bir işlev çalıştırıldığında, parametreler için saklı yordamlar oldukları aynı biçimde belirtilir:

  • Bağımsız değerler ayraç içine alınmaz.

  • Parametre adları belirtilebilir.

  • Parametre adı belirtilmezse, bağımsız değişkeni değerleri parametreleri olarak aynı sırada olması gerekmez.

Aşağıdaki örnek, ondalık skaler değer döndüren kullanıcı tanımlı bir işlev oluşturur.

Aşağıdaki örnek yürütür dbo.ufn_CubicVolume işlev. Kullanarak Transact-SQL yürütmek deyim bağımsız değişkenler, işlev tanımı parametrelerinde farklı bir sırada tanımlanır:

Aşağıdaki örnek yürütür dbo.ufn_CubicVolume Parametre adı belirtmeden işlev:

ODBC CALL sözdizimi çalıştırmak için de kullanılabilir dbo.ufn_CubicVolume OLE DB veya ODBC uygulamalardan işlev:

-- First use SQLBindParam to bind the return value parameter marker
-- to a program variable of the appropriate type
SQLExecDirect(hstmt,
              "{ CALL ? = dbo.ufn_CubicVolume(12.3, 4.5, 4.5) }",
              SQL_NTS);

Bir tabloya veri türü kullanıcı tanımlı işlevler That Dön'ı çağırma

Döndüren kullanıcı tanımlı bir işlev başlatabileceğiniz bir table Tablo deyimler içinde FROM izin yan tümce SELECT, INSERT, UPDATE veya DELETE deyimleri. Bir çağırma hedefi, tablo döndüren kullanıcı tanımlı bir işlev, isteğe bağlı bir tablo diğer ad ad adı tarafından izlenebilir.tablo değerli işlev çağırmak aşağıdaki örnekte gösterilmiştir. dbo.ufnGetContactInformation KIMDEN, yan tümce SELECT deyiminin.

Tablo döndüren kullanıcı tanımlı bir işlev KIMDEN, çağrılır yan tümce alt sorgu, işlev bağımsız değişkenleri dış sorgudan sütun başvuramaz.

Statik, salt okunur imleçler, FROM yan tümce, tablo döndüren kullanıcı tanımlı bir işlev için başvuran bir deyim açılabilir imlecin tek türdür.

deyim döndüren kullanıcı tanımlı bir işlev başvuran bir table işlevi saat çağırır.

Yerleşik tablo değerli işlevler çağırma

Tablo değeri veren birkaç yerleşik tablo değerli işlevler vardır.Bu yerleşik kullanıcı tanımlı işlev çağrısı kullanabilirsiniz veya her iki unqualifed olabilir sys şema niteleyici.Kullanmanız gereken sys şema niteleyici yerleşik tablo değerli fonksiyon, çünkü bu kullanıcı tanımlı işlevler aynı adı çakışıyor engeller.Aşağıdaki örnek, yerleşik sistem işlev Çağır nasıl gösterir. fn_helpcollations.

Ipuçları, tablo değerli işlevler ile kullanma

Kullanıcı tanımlı bir işlev oluşturduğunuzda, bir tablo oluşturan işlev tanımı sorguları ipucu uygulayabilirsiniz.Ipuçlarını başvuran görünümlerine uygulanır. Transact-SQL tablo değerli işlevler, aynı zamanda işlevler için uygulanır. Bu işlevler, ipuçları işlev tanımındaki ile çakışabilir.Daha fazla bilgi için bkz:Görüntüleme ve çözümleme.

Ipuçları, CLR tablo değerli işlevler başvuran görünümlerde uygulayamıyor.

Not

Yeteneği Database Engine Görünümler hakkında ipuçları için multi-deyim uygulamak görünüm tanımının bir parçası olan tablo değerli işlevler, gelecekteki bir sürümüne will be removed SQL Server.

Bir tablonun ipucu, herhangi bir tablo değerli işlev bir sorgunun FROM yan tümcesinde sonucunu uygulayamıyor.