SQL Server JOIN表作为变量

时间:2016-08-04 08:19:54

标签: sql-server

我正在尝试执行以下操作,@POtable变量和@ProdID将传递给存储过程。 @POtable名称应该是数据库中Order表之一,我将随机选择。我知道以下陈述不正确,什么是正确的语法?

Select * 
From Products 
Join @POtable On Products.ProdID = @POtable.ProdID
Where ProdID = @ProdID

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

如评论中所述,您不能在表名,列名,数据库名,函数名中使用变量......

要使用变量,必须使用动态SQL ..

Declare @potable Nvarchar(200);
Set @potable='sometablename';

Declare @SQL nVarchar(max)
Set @SQL='
Select * 
From Products p
Join '+QUOTENAME(@POtable)+' po On p.ProdID = po.ProdID
Where p.ProdID = '+@ProdID;

Exec(@SQL)