将表名作为参数传递给SQL Server 2012

时间:2018-03-25 16:31:17

标签: sql-server tsql sql-server-2012

我创建了一个SQL Server过程,我将表名作为参数传递。

@Input_Table_Name nvarchar(200),
@Output_Table_Name nvarchar(200)

当我使用select * from @Input_Table_Name时工作正常,但是当我使用select * into @Output_Table_NameUpdate @Output_Table_NameAlter table @Output_Table_Name时,它无效。

我理解创建动态查询而不是传递表名作为参数是一个很好的做法,但在这种情况下,我只想使用传递表名作为参数。

请告诉我们如何使用Select * intoAlter TableUpdate SQL语句来完成此工作。

1 个答案:

答案 0 :(得分:0)

正如评论中所提到的,使其成为纯T-SQL的唯一方法是使用动态SQL。但是,如果您启用SQLCMD mode in SSMS,您可以编写如下内容:

:setvar TableName "myTableName"
GO

SELECT * FROM $(TableName);
--it will be executed as: SELECT * FROM myTableName