存储过程中根据参数的空值与否拼接语句
题:存储过程有4个参数,1个是数据表名,3个是数据字段, 
             在这3个数据字段中,至少有一个数据字段参数不为空。   
 我的方式是:由于有3个不确定空值与否的参数,查询语句也不确定,可以根据判断,得出查询语句。 
 存储过程我是这样写的   
 if   exists   (select   name   from   sysobjects   where   name   =    'MyProcedurePD '   and   type   =    'p ') 
 drop   procedure   MyProcedurePD 
 go   
 create      PROCEDURE   MyProcedurePD 
 --参数---   
 @tablename   nvarchar(20),   --表名 
 @var1   nvarchar(20)= ' ',      --参数1 
 @var2   nvarchar(20)= ' ',      --参数2 
 @var3   nvarchar(20)= ' ',      --参数3   
 As   
 BEGIN 
 --初始化空值参数-----------   
 if(@var1   is   null) 
 	set   @var1= ' '   
 if(@var2   is   null) 
 	set   @var2= ' '   
 if(@var3   is   null) 
 	set   @var3= ' '   
 --初始化查询语句-----------   
 declare   @where   nvarchar(4000) 
 set   @where   = ' '   
 if(len(@var1)> 0) 
 begin 
 	if(len(@where)=0) 
 	begin 
 		set   @where=@where   + 'ywlbid   =    ' ' '+@var1+ ' ' ' ' 
 	end 
 	else 
 	begin 
 		set   @where=@where   + 'and   ywlbid   =    ' ' '+@var1+ ' ' ' ' 
 	end 
 end   
 if(len(@var2)> 0) 
 begin 
 	if(len(@where)=0) 
 	begin 
 		set   @where=@where   + 'ywid   =    ' ' '+@var2+ ' ' ' ' 
 	end 
 	else 
 	begin 
 		set   @where=@where   + 'and   ywid   =    ' ' '+@var2+ ' ' ' ' 
 	end 
 end   
 if(len(@var3)> 0) 
 begin 
 	if(len(@where)=0) 
 	begin 
 		set   @where=@where   + 'ywxid   =    ' ' '+@var3+ ' ' ' ' 
 	end 
 	else 
 	begin 
 		set   @where=@where   + 'and   ywxid   =    ' ' '+@var3+ ' ' ' ' 
 	end 
 end     
 if(len(@where)> 0) 
    set   @where   = '   WHERE    '+@where    
 declare   @SQLCOUNT   nvarchar(4000);      
 set   @SQLCOUNT   = '   select   *   from    '+@tablename+ ' '+   @where   
 EXEC   (@SQLCOUNT)   
 END   
 但是老是报错,说“as   附近有错”   
 请达人解答。
------解决方案--------------------var3 nvarchar(20)= ' ',  --参数3 
 ==>  
 var3 nvarchar(20)= ' '  --参数3. 多了个逗号 
------解决方案--------------------@var3 nvarchar(20)= ' ',  --参数3   
 把这里的  ', ' 去掉