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

Lewati tabel sebagai parameter ke sql server UDF

Anda bisa, namun tidak ada meja apa pun. Dari dokumentasi:

Untuk fungsi Transact-SQL, semua tipe data, termasuk tipe yang ditentukan pengguna CLR dan tipe tabel yang ditentukan pengguna, diizinkan kecuali tipe data cap waktu.

Anda dapat menggunakan jenis tabel yang ditentukan pengguna .

Contoh jenis tabel yang ditentukan pengguna:

CREATE TYPE TableType 
AS TABLE (LocationName VARCHAR(50))
GO 

DECLARE @myTable TableType
INSERT INTO @myTable(LocationName) VALUES('aaa')
SELECT * FROM @myTable

Jadi yang dapat Anda lakukan adalah menentukan tipe tabel Anda, misalnya TableType dan tentukan fungsi yang mengambil parameter jenis ini. Contoh fungsi:

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

Parameter harus READONLY. Dan contoh penggunaan:

DECLARE @myTable TableType
INSERT INTO @myTable(LocationName) VALUES('aaa')
SELECT * FROM @myTable

SELECT dbo.Example(@myTable)

Bergantung pada apa yang ingin Anda capai, Anda dapat memodifikasi kode ini.

EDIT: Jika Anda memiliki data dalam tabel, Anda dapat membuat variabel:

DECLARE @myTable TableType

Dan ambil data dari tabel Anda ke variabel

INSERT INTO @myTable(field_name)
SELECT field_name_2 FROM my_other_table


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nilai acak untuk kolom DATETIME

  2. Nonaktifkan Akun SA di SQL Server (Contoh T-SQL)

  3. Perbaiki "Setidaknya salah satu argumen untuk COALESCE harus berupa ekspresi yang bukan konstanta NULL" di SQL Server

  4. Cara Menjatuhkan Properti Identitas dari Kolom di Tabel SQL Server - Tutorial SQL Server / T-SQL 44

  5. CROSS JOIN vs INNER JOIN dalam SQL