Anda dapat membungkusnya dalam pernyataan EXEC seperti ini:
declare @my_tablename nvarchar(100) = 'mytable';
exec('
SELECT * FROM
(
SELECT * FROM
(
SELECT * FROM ' + @my_tablename + '
)
INNER JOIN ' + @my_tablename + ' ON ...'
);
Tapi tidak, intellisense tidak akan bekerja dalam skenario itu.
Jika Anda tahu seperti apa output Anda sebelumnya, maka Anda dapat mendeklarasikan tabel temp untuk menampung hasilnya, dan kemudian Anda dapat mengaksesnya tanpa EXEC. Anda akan memiliki intellisense di tabel sementara.
Misalnya:
--this must match whatever your SELECT is going to return
CREATE TABLE #results(
FIELD1 INT
,FIELD2 NVARCHAR(100)
,FIELD3 BIT
);
EXEC('
INSERT INTO #results(field1,field2,field3)
SELECT FIELD1,FIELD2,FIELD3 FROM ' + @my_tablename
);
select * from #results --you will have intellisense on #results