我创建了一个SQL Server过程,我将表名作为参数传递。
@Input_Table_Name nvarchar(200),
@Output_Table_Name nvarchar(200)
当我使用select * from @Input_Table_Name
时工作正常,但是当我使用select * into @Output_Table_Name
或Update @Output_Table_Name
或Alter table @Output_Table_Name
时,它无效。
我理解创建动态查询而不是传递表名作为参数是一个很好的做法,但在这种情况下,我只想使用传递表名作为参数。
请告诉我们如何使用Select * into
,Alter Table
或Update
SQL语句来完成此工作。
答案 0 :(得分:0)
正如评论中所提到的,使其成为纯T-SQL的唯一方法是使用动态SQL。但是,如果您启用SQLCMD mode in SSMS,您可以编写如下内容:
:setvar TableName "myTableName"
GO
SELECT * FROM $(TableName);
--it will be executed as: SELECT * FROM myTableName