Melalui Jadual sebagai Parameter kepada UDF SQL Server
Dalam SQL Server, adalah mungkin untuk menghantar jadual sebagai parameter kepada fungsi skalar yang ditentukan pengguna (UDF). Walau bagaimanapun, ciri ini tidak terhad kepada semua jenis jadual.
Jenis Jadual yang Dibenarkan
Menurut dokumentasi Microsoft, semua jenis data dibenarkan untuk parameter UDF, kecuali untuk jenis data cap masa. Akibatnya, jenis jadual yang ditentukan pengguna boleh digunakan sebagai parameter.
Mencipta Jenis Jadual Yang Ditakrifkan Pengguna
Untuk menggambarkan, pertimbangkan jenis jadual berikut:
CREATE TYPE TableType AS TABLE (LocationName VARCHAR(50)) GO
UDF Contoh
Sekarang, mari kita tentukan UDF yang menerima parameter jenis TableType:
CREATE FUNCTION Example( @TableName TableType READONLY) RETURNS VARCHAR(50) AS BEGIN DECLARE @name VARCHAR(50) SELECT TOP 1 @name = LocationName FROM @TableName RETURN @name END
Penggunaan
Contoh penggunaan:
DECLARE @myTable TableType INSERT INTO @myTable(LocationName) VALUES('aaa') SELECT * FROM @myTable SELECT dbo.Example(@myTable)
Sekatan Pilihan untuk Jadual Satu Lajur
Jika anda ingin mengehadkan parameter kepada jadual dengan satu lajur, anda boleh mengubah suai definisi UDF untuk memasukkan semakan berikut:
CREATE FUNCTION Example( @TableName TableType READONLY) RETURNS VARCHAR(50) AS BEGIN IF (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @TableName AND TABLE_SCHEMA = 'dbo') > 1 RETURN ERROR(1, 1, 'Invalid parameter: table must have a single column.'); DECLARE @name VARCHAR(50) SELECT TOP 1 @name = LocationName FROM @TableName RETURN @name END
Mengisi Pembolehubah daripada Jadual Sedia Ada
Untuk menghantar data daripada jadual sedia ada kepada parameter UDF, anda boleh menggunakan pembolehubah:
DECLARE @myTable TableType INSERT INTO @myTable(field_name) SELECT field_name_2 FROM my_other_table
Atas ialah kandungan terperinci Bolehkah saya Lulus Jadual sebagai Parameter kepada UDF Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!