存储过程输出参数的例子
我写了一个插入表的存储过程 
 CREATE   PROCEDURE   [AddOppt] 
 @name   varchar(20),@chengwei   varchar(10),   @company   varchar(50),         
 @tel   varchar(20),   @addr   varchar(100),         
 @country   varchar(50)   
 AS 
 insert   OpptFeedback      
 (name,chengwei,company,tel,addr,country)   values      
 (@name,@chengwei,@company,@tel,@addr,@country) 
 GO 
 现在想改一下这个存储过程,加一个输出参数@outputOpptid,就是取得当前插入表的新记录的的ID号(自增),之前有告诉我在insert后面跟select   scope_identity(),可以取到, 
 现在的问题是,我不知道这个带输出参数的存储过程如何修改,,? 
 2,c#里怎样写来取得这个存储过程输出的参数赋值给一个label.Text   
 谢谢各位了啊,, 
------解决方案--------------------1: 
 CREATE PROCEDURE [AddOppt] 
 @name varchar(20),@chengwei varchar(10), @company varchar(50),     
 @tel varchar(20), @addr varchar(100),     
 @country varchar(50),   
 @outputOpptid int output   
 AS 
 ... 
 set @outputOpptid = scope_identity() 
 ...   
 2: 
 定义一个Parameter来取这个输出的值,比如: 
 Sqlparameter par = new SqlParameter(@outputOpptid, SqlDbType.Int); 
 par.Direction = ParameterDirection.Output; 
 ... 
 ExecuteSql 
 ... 
 object outValue = par.Value;
------解决方案--------------------CREATE PROCEDURE [AddOppt] 
 @name varchar(20),@chengwei varchar(10), @company varchar(50),    
 @tel varchar(20), @addr varchar(100),    
 @country varchar(50)   
 AS 
 insert OpptFeedback    
 (name,chengwei,company,tel,addr,country) values    
 (@name,@chengwei,@company,@tel,@addr,@country)   
 /*加这一行*/   
 return (select @@identity)    
 GO     
 取存储过程返回的int值   
 public override int exeSP(string strSP,string[] strParams,object[] strValues) 
 		{  
   		SqlCommand cmd=new SqlCommand();  
   		cmd.Connection=this.conn ;  
 			cmd.CommandType=CommandType.StoredProcedure; 
 			cmd.CommandText=strSP; 
   		if(inTransaction)  
     	cmd.Transaction=trans;  
   		if((strParams!=null)&&(strParams.Length!=strValues.Length) )  
 			return -1; 
 			SqlParameter param; 
 			param=cmd.Parameters.Add( "@RtnVal ",SqlDbType.Int); 
 			param.Direction=ParameterDirection.ReturnValue; 
   		if(strParams!=null)  
 			{ 
   			for(int i=0;i <strParams.Length;i++) 
 				cmd.Parameters.Add(strParams[i],strValues[i]);  
 			} 
  					cmd.ExecuteNonQuery(); 
 			param=cmd.Parameters[ "@RtnVal "]; 
 			return Int32.Parse(param.Value.ToString()); 
 		}
------解决方案--------------------sp后面加: 
 RETURN scope_identity();   
 SqlParameter加一个参数@ReturnValue,(名字任意), Direction = ParameterDirection.ReturnValue   
 sp执行完成后,取值 
 int id = cmd.Parameters[ "@ReturnValue "].Value;