高手再帮帮忙 ,存储过程的问题
要创建一个用来查询的存储过程,数据库里有二十四张表,表名都是以月份命名的tabyyyymm(如tab200703),选择日期查询时可以是查询某一个月的,也可以跨月份的查询,比如查询2007年2月份至6月份的数据,已经有高手指点了,     
 但还有个问题 
 就是想在存储过程里添加个变量,接受其他条件查询,表里有name   和id两个字段。根据name   去查id。这样写不对       
 create   table   tab200701(id   int,name   char(10)) 
 insert   into   tab200701   select   1,aa 
 create   table   tab200702(id   int,name   char(10)) 
 insert   into   tab200702   select   2,bb 
 create   table   tab200703(id   int,name   char(10)) 
 insert   into   tab200703   select   3,cc 
 create   table   tab200704(id   int,name   char(10)) 
 insert   into   tab200704   select   4,dd 
 go     
 create   proc   usp_test    
          @begin   varchar(06), 
          @end   varchar(06)= ' ', 
          @name   varchar(50) 
 AS 
 if   @end= ' ' 
    set   @end=@begin 
 declare   @sql   varchar(8000) 
 set   @sql= ' ' 
 select   @sql=@sql+@name+ '   union   all   select   *   from   [ '+name+ '] '   from   sysobjects    
    where   right(name,6)   > =   @begin    
                and      right(name,6) <=@end 
                and   name   like    'tab% ' 
                and   len(name)=9 
                and   xtype= 'u '    
 set   @sql=   stuff(@sql,1,11, ' ') 
 exec(@sql) 
 print   @sql 
 GO 
 exec   usp_test    '200701 ', '200702 ', 'where   name= 'vicky ' ' 
------解决方案--------------------create proc usp_test  
    @begin varchar(06), 
    @end varchar(06)= ' ', 
    @name varchar(50) 
 AS 
 if @end= ' ' 
  set @end=@begin 
 declare @sql varchar(8000) 
 set @sql= ' ' 
 select @sql=@sql+ ' union all select * from [ '+name+ '] ' from sysobjects  
  where right(name,6) > = @begin  
      and  right(name,6) <=@end 
      and name like  'tab% ' 
      and len(name)=9 
      and xtype= 'u '  
 set @sql= stuff(@sql,1,11, ' ') + @name 
 exec(@sql) 
 print @sql 
 GO 
 exec usp_test  '200701 ', '200702 ', 'where name= ' 'vicky ' ' '
------解决方案--------------------如果想where对每个表生效就要加到每个表的后面 
 select @sql=@sql+ ' union all select * from [ '+name+ ']  '+@name from sysobjects