存储过程输出值问题
   ALTER   PROCEDURE   [dbo].[cna_searchKey_insert] 
 	@keywords   varchar(100), 
 	@tab   char(1), 
 	@affectedRow   int   output  	 
 AS 
 declare   @strSQL   nvarchar(1000)   
 BEGIN 
                set   @strSQL   =    'select   tab   from   keywords   where   keywords   =    ' ' '+@keywords   +    ' ' ' ' 
                exec   sp_executesql   @strSQL 
                set   @affectedRow=@@rowcount 
 begin 
                if   @@rowcount   !=   0    
                         set   @strSQL= 'update   keywords   set   addtimes   =   addtimes   +   1      where   keywords   =    ' ' '+@keywords   +    ' ' ' ' 
             else 
                         set   @strSQL= 'insert   keywords   (keywords,tab)   values   ( ' ' '   +@keywords+    ' ' ', ' ' '+@tab+ ' ' ') ' 
             end 
          exec   sp_executesql          
 END     
 我的意思是,往数据库里添加数据时,先判断这个数据是否存在,如果已经存在,那条记录的计数器+1,如果不存在就添加。 
 可是我在ASP里调用以上存储过程,发现response.write   Cmd.Parameters( "@affectedRow ").Value是空的,什么值也没有。不知为什么?
------解决方案--------------------在C#代码中将存储过程的输出参数保存在指定变量中再输出. 
 cmd.parameters( "@affectedRow ")虽然名字和sql中的相同,但只有sql知道@affectedRow是什么,程序并不知道存储过程的返回值就是@affectedRow
------解决方案--------------------if @@rowcount != 0  
 改 
  if @@rowcount >  0  
------解决方案--------------------ALTER PROCEDURE [dbo].[cna_searchKey_insert] 
 @keywords varchar(100), 
 @tab char(1), 
 @affectedRow int output   
 AS 
 declare @strSQL nvarchar(1000)   
 BEGIN 
 /* 
 set @strSQL =  'select tab from keywords where keywords =  ' ' '+@keywords +  ' ' ' ' 
 exec sp_executesql @strSQL 
 set @affectedRow=@@rowcount 
 */ 
 set @strSQL =  'select @affectedRow=count(1) from keywords where keywords =  ' ' '+@keywords +  ' ' ' ' 
 exec sp_executesql @strSQL,N '@affectedRow int output ',@affectedRow output   
 begin 
 --if @@rowcount != 0 
 if @affectedRow> 0 
 set @strSQL= 'update keywords set addtimes = addtimes + 1 where keywords =  ' ' '+@keywords +  ' ' ' ' 
 else 
 set @strSQL= 'insert keywords (keywords,tab) values ( ' ' ' +@keywords+  ' ' ', ' ' '+@tab+ ' ' ') ' 
 end 
 --exec sp_executesql 
 exec sp_executesql @strSQL   
 END
------解决方案--------------------C#输出代码 
 数据库返回值 
 parameters[13].Direction = ParameterDirection.Output; 
 scParameter.parameters = parameters; 
 db.EditTableNoReturnValue(scParameter); 
 return Convert.ToInt32(parameters[13].Value);