Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Pengantar Fungsi Bernilai Tabel Multi-Pernyataan (MSTVF) di SQL Server

Di SQL Server, fungsi bernilai tabel multi-pernyataan adalah salah satu dari dua jenis fungsi bernilai tabel Transact-SQL (jenis lainnya adalah fungsi bernilai tabel sebaris).

Fungsi bernilai tabel (TVF) adalah jenis fungsi yang ditentukan pengguna yang mengembalikan hasilnya sebagai tabel. Oleh karena itu mereka dapat ditanyakan seperti tabel normal.

TVF multi-pernyataan (kadang-kadang disebut sebagai MSTVF) dapat terdiri dari beberapa pernyataan, yang hasilnya disimpan dalam variabel kembalian. Anda menyertakan spesifikasi variabel kembali di bagian atas fungsi. Ini menentukan struktur tabel kembali. Dengan kata lain, Anda menentukan berapa banyak kolom, namanya, tipe data, dll.

Ini berbeda dengan TVF inline (juga disebut sebagai ITVF), yang tidak menggunakan variabel kembali (tabel kembali ditentukan oleh SELECT penyataan).

MSTVF juga menggunakan BEGIN /END sintaks, yang merupakan hal lain yang membedakannya dari ITVF (ITVF tidak menggunakan sintaks tersebut).

Contoh Fungsi Bernilai Tabel Multi-Pernyataan

Berikut ini contoh MSTVF dasar:

CREATE FUNCTION dbo.udf_PetsByName_MSTVF( @PetName varchar(70))
    RETURNS @pets TABLE (
        PetId varchar(20),
        PetName varchar(70)
    )
AS
BEGIN
    INSERT INTO @pets
    SELECT 
        CONCAT('Cat', ' ', CatId),
        CatName
    FROM dbo.Cats
    WHERE CatName = @PetName;

    INSERT INTO @pets
    SELECT 
        CONCAT('Dog', ' ', DogId),
        DogName
    FROM dbo.Dogs
    WHERE DogName = @PetName;

    IF @@ROWCOUNT = 0
    BEGIN
        INSERT INTO @pets
        VALUES (
            '',
            'There are no pets of that name.'
            )
    END

    RETURN;
END;

GO

Di sini, saya memulai fungsi dengan mendefinisikan variabel kembalian yang disebut @pets . Jenisnya tabel , dan itu akan mengembalikan dua kolom.

Dalam hal ini saya memiliki dua SELECT pernyataan dan IF penyataan. Hasil masing-masing disimpan dalam variabel kembali. Ini dilakukan melalui INSERT pernyataan setiap kali.

Opsi Fungsi

Anda juga dapat menentukan hal-hal seperti, apakah akan menggunakan pengikatan skema atau tidak (mungkin sebaiknya), dan apakah akan mengenkripsi fungsi atau tidak.

Pengikatan skema akan mencegah perubahan merugikan apa pun yang dilakukan pada objek dasar yang menjadi sandaran fungsi tersebut (seperti menjatuhkan tabel, mengubah kolom, dll).

Enkripsi akan mengonversi definisi fungsi ke format yang dikaburkan (untuk mencegah orang lain dapat membacanya).

Lihat Membuat Fungsi Bernilai Tabel Bernilai Multi untuk contoh menambahkan pengikatan skema dan enkripsi ke ITVF.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL untuk menemukan karakter non-numerik pertama dalam sebuah string

  2. menentukan set karakter dari tabel / database?

  3. Apa perbedaan antara Keamanan Terintegrasi =Benar dan Keamanan Terintegrasi =SSPI?

  4. Periksa Jenis Parameter Fungsi Partisi di SQL Server (T-SQL)

  5. Pengantar Ruang Penyimpanan Langsung untuk SQL Server