Bạn có thể, tuy nhiên không có bất kỳ bảng nào. Từ tài liệu:
Đối với các hàm Transact-SQL, tất cả các kiểu dữ liệu, bao gồm cả kiểu CLR do người dùng xác định và kiểu bảng do người dùng xác định, đều được phép ngoại trừ kiểu dữ liệu dấu thời gian.
Bạn có thể sử dụng loại bảng do người dùng xác định .
Ví dụ về loại bảng do người dùng xác định:
CREATE TYPE TableType
AS TABLE (LocationName VARCHAR(50))
GO
DECLARE @myTable TableType
INSERT INTO @myTable(LocationName) VALUES('aaa')
SELECT * FROM @myTable
Vì vậy, những gì bạn có thể làm là xác định loại bảng của mình, ví dụ:TableType
và xác định hàm nhận tham số kiểu này. Một chức năng ví dụ:
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
Tham số phải SN SÀNG. Và cách sử dụng ví dụ:
DECLARE @myTable TableType
INSERT INTO @myTable(LocationName) VALUES('aaa')
SELECT * FROM @myTable
SELECT dbo.Example(@myTable)
Tùy thuộc vào những gì bạn muốn đạt được, bạn có thể sửa đổi mã này.
CHỈNH SỬA: Nếu bạn có dữ liệu trong bảng, bạn có thể tạo một biến:
DECLARE @myTable TableType
Và lấy dữ liệu từ bảng của bạn vào biến
INSERT INTO @myTable(field_name)
SELECT field_name_2 FROM my_other_table