SQL Server 2008以降では、テーブル自体の値を更新する必要がない限り、テーブル値パラメーターを使用してテーブル変数を動的SQLステートメントに渡すことができます。
したがって、投稿したコードから、このアプローチを@TSku
に使用できます。 ただし、@RelPro
は対象外です
以下の構文例。
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]
physloc
列は、子スコープで参照されるテーブル変数が、コピーではなく外部スコープと確実に同じであることを示すために含まれています。