/* 实现动态sql传参的方法一:用数字变量转换为varchar*/ declare @sql_select varchar(max) declare @sql_group varchar(max) declare @sql_where varchar(max) set @sql_select=substring(@sql_select,1,len(@sql_select)-1)+' as groupItem,sum(pieces)*'+cast(@quantityPerGarment as varchar(20))+' as quantity from sizeBreakdown ' set @sql_group=substring(@sql_group,1,len(@sql_group)-1) exec(@sql_select+@sql_where+@sql_group) /* 实现动态sql传参的方法二:使用sp_executesql*/ declare @sql_select nvarchar(max) --这里必须是nvarchar declare @sql_group nvarchar(max) --这里必须是nvarchar declare @sql_where nvarchar(max) --这里必须是nvarchar declare @sqls nvarchar(max) --这里必须是nvarchar set @sql_select=substring(@sql_select,1,len(@sql_select)-1)+' as groupItem,sum(pieces)*@quantityPerGarment as quantity from sizeBreakdown ' set @sql_group=substring(@sql_group,1,len(@sql_group)-1) set @sqls=@sql_select+@sql_where+@sql_group print @sql_select exec sp_executesql @sqls,N'@quantityPerGarment numeric(20)',@quantityPerGarment
二)动态sql获取返回的结果集
获取动态sql返回值,参见 http://www.cnblogs.com/wanyuan8/archive/2011/11/09/2243483.html