Auf SQL Server 2008+ ist es möglich, Tabellenwertparameter zu verwenden, um eine Tabellenvariable an eine dynamische SQL-Anweisung zu übergeben, solange Sie die Werte in der Tabelle selbst nicht aktualisieren müssen.
Aus dem von Ihnen geposteten Code könnten Sie diesen Ansatz also für @TSku
verwenden aber nicht für @RelPro
Beispielsyntax unten.
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]
Der physloc
Spalte wird nur eingefügt, um zu demonstrieren, dass die Tabellenvariable, auf die im untergeordneten Gültigkeitsbereich verwiesen wird, definitiv dieselbe ist wie der äußere Gültigkeitsbereich und keine Kopie.