W SQL Server 2008+ możliwe jest użycie parametrów wartości tabeli do przekazania zmiennej tabeli do dynamicznego polecenia SQL, o ile nie trzeba aktualizować wartości w samej tabeli.
Więc z kodu, który zamieściłeś, możesz użyć tego podejścia dla @TSku
ale nie dla @RelPro
Przykładowa składnia poniżej.
CREATE TYPE MyTable AS TABLE
(
Foo int,
Bar int
);
GO
DECLARE @T AS MyTable;
INSERT INTO @T VALUES (1,2), (2,3)
SELECT *,
sys.fn_PhysLocFormatter(%%physloc%%) AS [physloc]
FROM @T
EXEC sp_executesql
N'SELECT *,
sys.fn_PhysLocFormatter(%%physloc%%) AS [physloc]
FROM @T',
N'@T MyTable READONLY',
@[email protected]
physloc
kolumna jest dołączona tylko po to, aby zademonstrować, że zmienna tabeli, do której odwołuje się zakres podrzędny, jest zdecydowanie tą samą, co zakres zewnętrzny, a nie kopią.