Op SQL Server 2008+ is het mogelijk om tabelwaardeparameters te gebruiken om een tabelvariabele door te geven aan een dynamische SQL-instructie, zolang u de waarden in de tabel zelf niet hoeft bij te werken.
Dus op basis van de code die je hebt gepost, zou je deze aanpak kunnen gebruiken voor @TSku
maar niet voor @RelPro
Voorbeeld syntaxis hieronder.
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]
De physloc
kolom is opgenomen om aan te tonen dat de tabelvariabele waarnaar in het onderliggende bereik wordt verwezen, absoluut dezelfde is als het buitenste bereik in plaats van een kopie.