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',
@example@sqldat.com
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.