日期:2014-05-17  浏览次数:20451 次

动态参数--必须声明标量变量
之前没有使用动态参数,现在想搞成使用动态参数

insert into @OrderTable select * from dbo.Order_Basicinfo as a where exists (select TID from  @table as b where a.TID=b.TID);
select * from  @OrderTable   
select * from dbo.Promotion_Detail as a where exists (select id from   @OrderTable as b where a.ID=b.OrderID);

现在想搞成这样子:

declare @sql nvarchar(500);
set @sql='select * from  @OrderTable  select * from dbo.Promotion_Detail as a where exists (select id from   '+@OrderTable+' as b where a.ID=b.OrderID);'
exec(@sql)

报错说@OrderTable必须声明标量变量,问题是我在之前已经声明了

------解决方案--------------------
DECLARE @OrderTable NVARCHAR(128)='test'
declare?@sql?nvarchar(500);
set?@sql='select?*?from??'+@OrderTable+'??select?*?from?dbo.Promotion_Detail?as?a?where?exists?(select?id?from???'+@OrderTable+'?as?b?where?a.ID=b.OrderID);'
print(@sql)
先print出来,如果是你想要的才把print改成exec
------解决方案--------------------

declare @sql nvarchar(500);
set @sql='select * from  '+@OrderTable+' select * from dbo.Promotion_Detail as a where exists (select id from   '+@OrderTable+' as b where a.ID=b.OrderID);'
exec(@sql)