In SQL Server 2008+ è possibile utilizzare i parametri con valori di tabella per passare una variabile di tabella a un'istruzione SQL dinamica purché non sia necessario aggiornare i valori nella tabella stessa.
Quindi dal codice che hai pubblicato potresti usare questo approccio per @TSku
ma non per @RelPro
Esempio di sintassi di seguito.
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]
Il physloc
la colonna è inclusa solo per dimostrare che la variabile della tabella a cui si fa riferimento nell'ambito figlio è sicuramente la stessa dell'ambito esterno anziché una copia.