读书人

动态参数-务须声明标量变量

发布时间: 2013-10-19 20:58:22 作者: rapoo

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


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)

读书人网 >SQL Server

热点推荐