Du kan dog ikke noget bord. Fra dokumentation:
For Transact-SQL-funktioner er alle datatyper, inklusive CLR brugerdefinerede typer og brugerdefinerede tabeltyper, tilladt undtagen tidsstempeldatatypen.
Du kan bruge brugerdefinerede tabeltyper .
Eksempel på brugerdefineret tabeltype:
CREATE TYPE TableType
AS TABLE (LocationName VARCHAR(50))
GO
DECLARE @myTable TableType
INSERT INTO @myTable(LocationName) VALUES('aaa')
SELECT * FROM @myTable
Så hvad du kan gøre er at definere din tabeltype, for eksempel TableType
og definere den funktion, der tager parameteren af denne type. Et eksempel på en funktion:
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
Parameteren skal være LÆSEKUN. Og eksempelbrug:
DECLARE @myTable TableType
INSERT INTO @myTable(LocationName) VALUES('aaa')
SELECT * FROM @myTable
SELECT dbo.Example(@myTable)
Afhængigt af hvad du vil opnå, kan du ændre denne kode.
EDIT: Hvis du har data i en tabel, kan du oprette en variabel:
DECLARE @myTable TableType
Og tag data fra din tabel til variablen
INSERT INTO @myTable(field_name)
SELECT field_name_2 FROM my_other_table