En SQL Server 2008+, es posible usar parámetros con valores de tabla para pasar una variable de tabla a una instrucción SQL dinámica siempre que no necesite actualizar los valores en la tabla.
Entonces, a partir del código que publicaste, podrías usar este enfoque para @TSku
pero no para @RelPro
Ejemplo de sintaxis a continuación.
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]
El physloc
La columna se incluye solo para demostrar que la variable de la tabla a la que se hace referencia en el ámbito secundario es definitivamente la misma que la del ámbito externo en lugar de una copia.