No SQL Server 2008+, é possível usar Parâmetros com valor de tabela para passar uma variável de tabela para uma instrução SQL dinâmica, desde que você não precise atualizar os valores na própria tabela.
Então, a partir do código que você postou, você pode usar essa abordagem para
@TSku
mas não para @RelPro
Sintaxe de exemplo abaixo.
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]
O
physloc
column é incluída apenas para demonstrar que a variável de tabela referenciada no escopo filho é definitivamente a mesma que o escopo externo em vez de uma cópia.