W SQL Server 2005 wprowadzono operator Apply. Służy on do łączenia tabeli z funkcją zwracającą również tabelę (table-valued function). Po lewej stronie operatora mamy więc zwykłą tabelę (np. "Employees”) a po prawej jakąś funkcję (np. “GetContactInfo”). Apply wywoła GetContactInfo dla każdego wiersza z Employee. W T-SQL występują dwie odmiany operatora: CROSS APLY i OUTER APPLY. Pierwszy z nich złączy wyłącznie te wiersze dla których funkcja zwraca jakiś wynik. Z kolei OUTER APPLY złączy wiersze zastępując brakujące pola wartością NULL. Przykład:
SELECT tbl.FirstName, tbl.LastName, func.Email, func.Phone FROM Employess as tbl CROSS APPLY GetContactInfo(tbl.ID_EMPLOYEE) as func;
Jak już wspomniałem, GetContactInfo wywoływany jest dla każdego wiersza zwróconego przez pierwsze zapytanie SELECT.
Proste a przydatne.
Dzięki!