Możesz jednak nie mieć żadnego stolika. Z dokumentacji:
W przypadku funkcji Transact-SQL wszystkie typy danych, w tym typy zdefiniowane przez użytkownika i tabele zdefiniowane przez użytkownika, są dozwolone z wyjątkiem typu datownika.
Możesz używać typów tabel zdefiniowanych przez użytkownika .
Przykład typu tabeli zdefiniowanej przez użytkownika:
CREATE TYPE TableType
AS TABLE (LocationName VARCHAR(50))
GO
DECLARE @myTable TableType
INSERT INTO @myTable(LocationName) VALUES('aaa')
SELECT * FROM @myTable
Możesz więc zdefiniować typ tabeli, na przykład TableType
i zdefiniuj funkcję, która przyjmuje parametr tego typu. Przykładowa funkcja:
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
Parametr musi być TYLKO DO ODCZYTU. I przykładowe użycie:
DECLARE @myTable TableType
INSERT INTO @myTable(LocationName) VALUES('aaa')
SELECT * FROM @myTable
SELECT dbo.Example(@myTable)
W zależności od tego, co chcesz osiągnąć, możesz zmodyfikować ten kod.
EDYTUJ: Jeśli masz dane w tabeli, możesz utworzyć zmienną:
DECLARE @myTable TableType
I przenieś dane ze swojej tabeli do zmiennej
INSERT INTO @myTable(field_name)
SELECT field_name_2 FROM my_other_table