存储过程返回最大标识列

当我们在插入数据库表中的数据时,常常的要在插入完的同时,还要取出里面最大的标识列的值,然后再插入另一张表,下面方法实现的是当我们插入值时同时取出刚插入的值的标识列作为返回值,返回给函数调用:

  新建一个存储过程:

CREATE  PROCEDURE Add_New_Dealer      

 @MaxID int = null out--输出参数,供程序使用

AS INSERT INTO Dealer_Table             

    (Dealer_Title, Dealer_Msg, Link_Man, Is_God, Hits, Link_Tel, Link_Fax, Wang_Zhi, E_Email, Adress, Dealer_Tubiao, Car_ShuLiang, Dai_Shou_Car, Gongsi_Image) VALUES 

 (NULL, NULL, NULL, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL)

 SET @MaxID = @@IDENTITY  --这个是记录刚插入时的标记ID,即为自增列的ID

此存储过程的作用是在我们用户注册的同时,给他开设一个店铺,里面需要的就是新声明一个字段记录最大值。

下面是c#函数的调用:

  public static string Create_Dealer()    

 {        

 SqlConnection Conn = Cls_Data_Conn.Data_Conn();  

       try       

  {

            SqlCommand cmd = new SqlCommand("Add_New_Dealer", Conn);  //cmd为调用的Add_New_Dealer的存储过程             cmd.CommandType = CommandType.StoredProcedure;        

                 SqlParameter i = new SqlParameter("@MaxID", SqlDbType.VarChar , 50); //新建一个参数,接受插入的列的标记              cmd.Parameters.Add(i);//将标记列添加的参数中       

       i.Direction = ParameterDirection.Output; //说明此参数的输出的方向        

      Conn.Open();         

    string strResult = cmd.ExecuteNonQuery().ToString();      

            string strReturn = i.Value.ToString(); //返回值--方法1  的存储过程中的返回值     

         Conn.Close();             return strReturn;      

   }     

    catch (Exception ey)     

    {         

    Conn.Close();          

   return ey.Message.ToString();   

      }    

 }

原文地址:https://www.cnblogs.com/zhijianliutang/p/2250673.html