Можете обаче да нямате никаква маса. От документацията:
За функциите на Transact-SQL всички типове данни, включително CLR потребителски дефинирани типове и потребителски дефинирани типове таблици, са разрешени с изключение на типа данни за времеви печат.
Можете да използвате дефинирани от потребителя типове таблици .
Пример за дефиниран от потребителя тип таблица:
CREATE TYPE TableType
AS TABLE (LocationName VARCHAR(50))
GO
DECLARE @myTable TableType
INSERT INTO @myTable(LocationName) VALUES('aaa')
SELECT * FROM @myTable
Така че това, което можете да направите, е да дефинирате вашия тип таблица, например 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
Параметърът трябва да бъде САМО ЧЕТЕНЕ. И примерна употреба:
DECLARE @myTable TableType
INSERT INTO @myTable(LocationName) VALUES('aaa')
SELECT * FROM @myTable
SELECT dbo.Example(@myTable)
В зависимост от това, което искате да постигнете, можете да промените този код.
РЕДАКТИРАНЕ: Ако имате данни в таблица, можете да създадете променлива:
DECLARE @myTable TableType
И вземете данни от вашата таблица в променливата
INSERT INTO @myTable(field_name)
SELECT field_name_2 FROM my_other_table