我正在尝试执行以下操作,@POtable
变量和@ProdID
将传递给存储过程。 @POtable
名称应该是数据库中Order
表之一,我将随机选择。我知道以下陈述不正确,什么是正确的语法?
Select *
From Products
Join @POtable On Products.ProdID = @POtable.ProdID
Where ProdID = @ProdID
感谢您的帮助。
答案 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)