快来人呐!问题都发好几次了怎么没人解答,查询语句中表名为参数的情况
表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