我写了一个插入表的存储过程
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.   

    1:
    CREATE PROCEDURE [AddOppt]
    @name varchar(20),@chengwei varchar(10), @company varchar(50),  @tel varchar(20), @addr varchar(100),  @country varchar(50),@outputOpptid int outputAS
    ...
    set @outputOpptid = scope_identity()
    ...2:
    定义一个Parameter来取这个输出的值,比如:
    Sqlparameter par = new SqlParameter(@outputOpptid, SqlDbType.Int);
    par.Direction = ParameterDirection.Output;
    ...
    ExecuteSql
    ...
    object outValue = par.Value;
      

  2.   

    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());
    }
      

  3.   

    sp后面加:
    RETURN scope_identity();SqlParameter加一个参数@ReturnValue,(名字任意), Direction = ParameterDirection.ReturnValuesp执行完成后,取值
    int id = cmd.Parameters["@ReturnValue"].Value;