日期:2014-05-18  浏览次数:20426 次

快来人呐!问题都发好几次了怎么没人解答,查询语句中表名为参数的情况
表Task
  TaskID, TaskSendToGroups TaskSendDateTime, TaskTableName, TaskLinkeTable
  1 1 2012-06-24 07:00 EDM_Dynamic_1 EDM_Links_1  
  2 1,2 2012-06-24 07:00 EDM_Dynamic_2 EDM_Links_2
其中EDM_Dynamic1、EDM_Dynamic2动态创建的表
我要查询出Task表中的数据,并且要统计出 EDM_Dynamic_1,和EDM_Dynamic_2表中的数据

select *,(select count(*) from EDM_Dynamic_1)as Num from Task
select *,(select count(*) from EDM_Dynamic_2)as Num from Task
我在存储过程中,
select *,(select count(*) from Task.TaskTableName)as Num from Task
这样查询报少括号,别的字段好像可以这么干?????

求大神指教


------解决方案--------------------
存储过程中以表名作为参数是一定要动用“动态SQL”语句的。
我举个例子:
set @sql='select @count=count(*) from '+@table+' where id not in (select id from '+@table_all+')'
exec sp_executesql @sql,N'@count int output',@count output