比如,记录中有四个字段,其中gi_id是自动增长的CREATE PROCEDURE pro_addgoods
@u_name nvarchar(50),
@gi_click int,
@gi_title nvarchar(50)
As
insert into t_goods_info(u_name,gi_click,gi_title) values(@u_name,@gi_click,@gi_title)我想获得添加成功后的gi_id,是否可以在上述存储过程中加一个输出参数,输出gi_id?
该如何添加这个输出参数?同时添加后如何赋值,如何在后台代码中执行存储过程的时候获得该参数?下面是执行存储过程的代码:SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ershouConnectionString"].ToString());
            //声明执行存储过程的SqlCommand     
            SqlCommand scd_sel = new SqlCommand("pro_addgoods", conn);
            scd_sel.CommandType = CommandType.StoredProcedure;
            //给存储过程的参数赋值   
            SqlParameter spa;
            spa = scd_sel.Parameters.Add("@u_name", SqlDbType.NVarChar, 50);
            spa.Direction = ParameterDirection.Input;
            spa.Value = Session["account"].ToString();
            spa = scd_sel.Parameters.Add("@gi_click", SqlDbType.Int, 4);
            spa.Direction = ParameterDirection.Input;
            spa.Value = 0;
            spa = scd_sel.Parameters.Add("@gi_title", SqlDbType.NVarChar, 50);
            spa.Direction = ParameterDirection.Input;
            spa.Value = txttitle.Text;
//执行存储过程   
            if (conn.State == ConnectionState.Closed)
                conn.Open();
            try
            {
                scd_sel.ExecuteNonQuery();
                scd_sel.Dispose();  //释放资源
            }
            catch (SqlException ae)
            {
                throw (ae);
            }
            conn.Dispose();

解决方案 »

  1.   

    insert into t_goods_info(u_name,gi_click,gi_title) values(@u_name,@gi_click,@gi_title)
    select @@identity
    通过存储过程参数获取output 值
    using(SqlConnection connection =  new SqlConnection(""))
    {
      using (SqlCommand insertCommand = connection.CreateCommand())
      {
      insertCommand.CommandText = "INSERT INTO Tb(u_name) VALUES (@u_name) SET @ID = SCOPE_IDENTITY()";  SqlParameter NumberParameter = new SqlParameter("@u_name", SqlDbType.Int);
      NumberParameter.Value = MyNumber;
      insertCommand.Parameters.Add(NumberParameter);
      insertCommand.ExecuteNonQuery();  SqlParameter b= new SqlParameter("@ID", SqlDbType.Int);
      b.Direction = ParameterDirection.Output;
      insertCommand.Parameters.Add(b);  id = (int)b.Value;
      }
    }
      

  2.   

    CREATE PROCEDURE pro_addgoods
    @u_name nvarchar(50),
    @gi_click int,
    @gi_id int output,
    @gi_title nvarchar(50)
    As
    insert into t_goods_info(u_name,gi_click,gi_title) values(@u_name,@gi_click,@gi_title)
    SET @gi_click = @@IDENTITY
      

  3.   

    错了,是这样的
    set @gi_id = @@IDENTITY
      

  4.   

    补充@@identity @@开头的叫系统级的变量
      

  5.   

    @@IDENTITY   
    返回最后插入的标识值。
      

  6.   

    return @@IDENTITY  也可以获取