Du kan dock inget bord. Från dokumentation:
För Transact-SQL-funktioner är alla datatyper, inklusive användardefinierade CLR-typer och användardefinierade tabelltyper, tillåtna förutom tidsstämpeldatatypen.
Du kan använda användardefinierade tabelltyper .
Exempel på användardefinierad tabelltyp:
CREATE TYPE TableType
AS TABLE (LocationName VARCHAR(50))
GO
DECLARE @myTable TableType
INSERT INTO @myTable(LocationName) VALUES('aaa')
SELECT * FROM @myTable
Så vad du kan göra är att definiera din tabelltyp, till exempel TableType
och definiera funktionen som tar parametern av denna typ. En exempelfunktion:
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
Parametern måste vara READONLY. Och exempelanvändning:
DECLARE @myTable TableType
INSERT INTO @myTable(LocationName) VALUES('aaa')
SELECT * FROM @myTable
SELECT dbo.Example(@myTable)
Beroende på vad du vill uppnå kan du ändra denna kod.
EDIT: Om du har data i en tabell kan du skapa en variabel:
DECLARE @myTable TableType
Och ta data från din tabell till variabeln
INSERT INTO @myTable(field_name)
SELECT field_name_2 FROM my_other_table