1. 程式人生 > >通過儲存過程獲取返回的剛剛插入的表的主鍵

通過儲存過程獲取返回的剛剛插入的表的主鍵

未經同意不得轉載

此主鍵可以是整型,字元型,由個人開發需求定義

   SqlParameter[] sp = {
                       new SqlParameter("@PID",PID),
                       new SqlParameter("@SizeType",SizeType),
                       new SqlParameter("@OrderQty",OrderQty),
                       new SqlParameter("@PlanedQty",PlanedQty),
                       new SqlParameter("@CreateBy",CreateBy),
                       new SqlParameter("@CreateDate",CreateDate) ,
                       new SqlParameter("@ReturnId",SqlDbType.VarChar,50)
                };

也就是在SqlParameter裡面定義一個@ReturnId用來進行裝返回值的,

    Connection.Open();
                //例項化資料庫命令物件
                SqlCommand cmd = new SqlCommand(CommandText, Connection);
                try
                {
                    //設定命令執行型別
                    cmd.CommandType = type;
                    //設定SQL語句或儲存過程引數
                    pars[6].Direction = ParameterDirection.Output;
                    cmd.Parameters.AddRange(pars);
                    //呼叫方法得到SqlDataReader物件
                    int ii = cmd.ExecuteNonQuery();
                    if (ii > 0) {
                        strId = cmd.Parameters["@ReturnId"].Value.ToString();
                    }
                    return strId;

上面的sp集合就是傳到下面的pars,在pars的dui'y

		@PID nvarchar(50),
		@SizeType nvarchar(50),
		@OrderQty nvarchar(50),
		@PlanedQty nvarchar(50),
		@CreateBy nvarchar(50),
		@CreateDate nvarchar(50),
		@ReturnId nvarchar(50) Output

AS
Begin Tran abd
		--插入主表
		Insert Into A表(PID, Size, QrderQty, PlanedQty, CreateBy, CreateDate)
		Values (
	    @PID ,@SizeType ,@OrderQty ,@PlanedQty,@CreateBy ,@CreateDate  )
		
		--Select @ReturnId=SCOPE_IDENTITY()
		select 	@ReturnId=(select ASH_ID from A表 where  	
[email protected]
and [email protected] and [email protected] and [email protected]) If @@Error<> 0 Begin Rollback Tran abd Return -1 End else begin Commit Tran end

其實主從表的時候也可以用到這個

記住,@ReturnId 是output型別的否則取不到值