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