高手帮我看看这条SQL存储过程.变量赋值问题.
create   proc   ec 
 as    
 begin 
 declare   @i   int 
 declare   @count   int 
 declare   @a   int 
 declare   @time   varchar(12) 
 declare   @timeyear   varchar(12) 
 select   @i=1 
 select   @count= 'select   count(*)   from   zzzz ' 
 while   @i <=@count 
 	begin 
 		set   @time= 'select   convert(varchar(12),completedatetime,108)   from   zzzz   where   Exchangecellid= '+@i 
 		set   @timeyear= 'select   convert(varchar(12),completedatetime,105)   from   zzzz   where   Exchangecellid= '+@i 
 		if   @time= '00:00:00 ' 
 		set   @a= 'select   Ondutylogid   from   T_OnDutyLog   where   convert(varchar(12),ondutydatetime,105)= '+@timeyear+ 'and   ondutytype= '+ '晚班 '+ '   and   ondutyno   like    '+ '%新业务室% ' 
 		else 
 		set   @a= 'select   ondutylogid   from   T_ondutylog   where   convert(varchar(12),ondutydatetime,105)= '+@timeyear+ '   and   ondutytype= '+ '白班 '+ '   and   ondutyno   like    '+ '%新业务室% ' 
 		end   if 
 		 'update   zzzz   set   ondutylogid=@a ' 
 		set   @i=@i+1 
 	end     
 SQl语句如上... 
 报错为..在应使用条件的上下文(在    'set '   附近)中指定了非布尔类型的表达式。 
 就是set   @i=@i+1这句.. 
 高手帮下忙啊..感激!
------解决方案--------------------楼主,你给变量赋值的语法错了,应该这样: 
  select @time=convert(varchar(12),completedatetime,108) from zzzz where Exchangecellid=@i   
 其他的类推
------解决方案--------------------end if 
  'update zzzz set ondutylogid=@a ' 
 --------------------------------------- 
 楼主是不是VB写习惯了 怎么还有 end if 的
------解决方案--------------------end if似乎是oracle的写法吧?
------解决方案--------------------本来就该有end if 吧?