Pada SQL Server 2008+ dimungkinkan untuk menggunakan Parameter Bernilai Tabel untuk meneruskan variabel tabel ke pernyataan SQL dinamis selama Anda tidak perlu memperbarui nilai dalam tabel itu sendiri.
Jadi dari kode yang Anda posting, Anda dapat menggunakan pendekatan ini untuk @TSku
tapi tidak untuk @RelPro
Contoh sintaks di bawah ini.
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
kolom disertakan hanya untuk menunjukkan bahwa variabel tabel yang dirujuk dalam lingkup anak pasti sama dengan lingkup luar daripada salinan.