大家帮我看看这个简单函数,不知道为什么会返回NULL?
alter   function   getpassword(@a   varchar(100)) 
 returns   varchar(100) 
 begin 
 declare   @i   smallint,@password   varchar(100) 
 set   @i=0 
 set   @password= ' ' 
 while   (@i <=len(@a)) 
 begin 
       set   @i=@i+1 
       set   @password=@password+char(ascii(substring(@a,@i,1))+1) 
 end 
 return   @password 
 end   
 --测试 
 select   dbo.getpassword( 'abcd ')   
 ----------------------------------------------------------------    
 NULL   
 (所影响的行数为   1   行) 
------解决方案--------------------alter function getpassword(@a varchar(100)) 
 returns varchar(100) 
 begin 
 declare @i smallint,@password varchar(100) 
 set @i=0 
 set @password= ' ' 
 while (@i <=len(@a)) 
 begin 
   set @password=@password+char(ascii(substring(@a,@i,1))+1) 
   set @i=@i+1               --这里换一下就可以了 
 end 
 return @password 
 end   
------解决方案--------------------while (@i <=len(@a))改为while (@i <=len(@a)-1)
------解决方案----------------------alter function getpassword(@a varchar(100)) 
 --returns varchar(100) 
 --begin 
 declare  @a varchar(100) 
 declare @i smallint,@password varchar(100) 
 set @a= 'password ' 
 set @i=0 
 set @password= ' ' 
 while (@i <=len(@a)) 
 begin 
   set @i=@i+1 
   set @password=@password+char(ascii(substring(@a,@i,1))+1) 
   print @@password  
 end 
 --return @password 
 --end   
 這樣看啊