如何使用指向子句中的表的变量?

时间:2016-07-27 23:46:55

标签: sql sql-server tsql

我希望能够做到这样的事情:

DECLARE @myTable = [database].[dbo].[MyTable]

INSERT INTO @myTable () VALUES ()
SELECT * FROM @myTable
DELETE FROM @myTable

可以这样做吗?

1 个答案:

答案 0 :(得分:1)

您必须使用动态SQL。更糟糕的是,你甚至无法将表作为参数传递:

DECLARE @myTable NVARCHAR(MAX) = '[database].[dbo].[MyTable]';

DECLARE @SQL NVARCHAR(MAX) = 'INSERT INTO [myTable](. . .) VALUES (. . .)';

SET @SQL = REPLACE(@SQL, '[myTable]', @myTable);

EXEC sp_executesql @sql;