U kunt echter geen enkele tafel. Uit documentatie:
Voor Transact-SQL-functies zijn alle gegevenstypen, inclusief door de gebruiker gedefinieerde CLR-typen en door de gebruiker gedefinieerde tabeltypen, toegestaan, behalve het gegevenstype tijdstempel.
U kunt door de gebruiker gedefinieerde tabeltypen . gebruiken .
Voorbeeld van een door de gebruiker gedefinieerd tabeltype:
CREATE TYPE TableType
AS TABLE (LocationName VARCHAR(50))
GO
DECLARE @myTable TableType
INSERT INTO @myTable(LocationName) VALUES('aaa')
SELECT * FROM @myTable
U kunt dus uw tabeltype definiëren, bijvoorbeeld TableType
en definieer de functie die de parameter van dit type nodig heeft. Een voorbeeldfunctie:
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
De parameter moet ALLEEN LEZEN zijn. En voorbeeldgebruik:
DECLARE @myTable TableType
INSERT INTO @myTable(LocationName) VALUES('aaa')
SELECT * FROM @myTable
SELECT dbo.Example(@myTable)
Afhankelijk van wat je wilt bereiken, kun je deze code aanpassen.
BEWERKEN: Als u gegevens in een tabel heeft, kunt u een variabele maken:
DECLARE @myTable TableType
En neem gegevens van uw tabel naar de variabele
INSERT INTO @myTable(field_name)
SELECT field_name_2 FROM my_other_table