现在我insert一条记录到user表,user表的主键是id,他是自增长的,现在我要在insert以后取出这个id的值(我是通过调用存储过程实现插入的,id作为output输出参数)。请高手帮帮忙,我该怎样才能获得这个id值,不要用查询语句,我想知道用操作存储过程的方式!

解决方案 »

  1.   


    INSERT INTO ……DECLARE @USERID INT
    SET @USERID=@@IDENTITY --主键值
      

  2.   

    declare   @s   nvarchar(4000),@i   int  
                    set   @s='select   @i=count(*)   from   test_exec'  
                    exec   sp_executesql   @s,N'@i   int   output',@i   output  
                    select   @i以上仅作参考,看过后应该会写了吧
      

  3.   

    我是通过调用存储过程实现插入的,id作为output输出参数
    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["LocalSqlServer"].ToString());
    conn.Open();
    SqlCommand MyCommand = new SqlCommand("MYSQL", conn);
    MyCommand.CommandType = CommandType.StoredProcedure;
    MyCommand.Parameters.Add(new SqlParameter("@a", SqlDbType.Int));
    MyCommand.Parameters["@a"].Value = 20;
    MyCommand.Parameters.Add(new SqlParameter("@b", SqlDbType.Int));
    MyCommand.Parameters["@b"].Value = 20;
    MyCommand.Parameters.Add(new SqlParameter("@c", SqlDbType.Int));
    MyCommand.Parameters["@c"].Direction = ParameterDirection.Output;

    MyCommand.ExecuteNonQuery();
    Response.Write(MyCommand.Parameters["@c"].Value.ToString());这是刚刚帮你找的,参数MyCommand.Parameters["@c"].Value值在这里.执行完后再取.
      

  4.   

      @@IDENTITY 就是你最近一次插入的数据的ID值
      

  5.   

    select @@IDENTITY在一条 INSERT、SELECT INTO 或大容量复制语句完成后,@@IDENTITY 中包含此语句产生的最后的标识值。若此语句没有影响任何有标识列的表,则 @@IDENTITY 返回 NULL。若插入了多个行,则会产生多个标识值,@@IDENTITY 返回最后产生的标识值。如果此语句激发一个或多个执行产生标识值的插入操作的触发器,则语句执行后立即调用 @@IDENTITY 将返回由触发器产生的最后的标识值。若 INSERT 或 SELECT INTO 语句失败或大容量复制失败,或事务被回滚,则 @@IDENTITY 值不会还原为以前的设置。