通過儲存過程獲取返回的剛剛插入的表的主鍵
阿新 • • 發佈:2018-12-16
未經同意不得轉載
此主鍵可以是整型,字元型,由個人開發需求定義
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型別的否則取不到值