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

动态脚本里用表变量报错
declare @id nvarchar(10)='12'
declare @sql1 nvarchar(2000)='DECLARE @ProgramIDs  table([ProgramID] [int]) insert into @ProgramIDs select '+@id
exec (@sql1)
print @@rowcount --这个在下面要使用

declare @sql2 nvarchar(2000)='select ProgramID from @ProgramIDs'
exec (@sql2)


因为中间要用 @@rowcount 所以sql1和sql2不能拼在一起 
sql1 在我的应用里是个复杂的查询sql,就是想用表变量 将sql1的结果存起来,第二次使用就不用查询了 直接使用表变量

如果要改成下面这样就失去用表变量的意义了
declare @id nvarchar(10)='12'
declare @sql1 nvarchar(2000)=' select '+@id
exec (@sql1)
print @@rowcount --这个在下面要使用

declare @sql2 nvarchar(2000)='DECLARE @ProgramIDs  table([ProgramID] [int]) insert into @ProgramIDs  select '+@id+' select ProgramID from @ProgramIDs'
exec (@sql2)

------最佳解决方案--------------------
创建一个临时表 然后
insert into #tb exec(@sql1)
------其他解决方案--------------------
变通下  @@rowcount 不就是变量表 @ProgramIDs的行数吗? 取出来
------其他解决方案--------------------
咋办啊?