0
我有一部分函數在其下面,它從第一個SProc中檢索一個autoID,並將它作爲參數傳遞給另一個SProc。在這裏我使用了事務回滾,假設我有一個Senario,第一個SProc成功執行了一切,但在第二個SProc中遇到了問題,第一個SProc操作是否會與第二個SProc一起回滾?一直以來,我只需要處理一個SProc事務,但這對我來說有點不同。謝謝。asp.net&SQL Server +事務回滾
Public Shared Function VoucherRedemption(ByVal dbTrans As DbTransaction _
, ByVal dbConnection As DbConnection _
, ByVal receiptNo As String _
, ByVal voucherNo As String _
, ByVal customerCode As String) As Boolean
Dim dbCommand As DbCommand = Nothing
Try
If DbConnection.State <> ConnectionState.Open Then
DbConnection.Open()
End If
dbCommand = GetStoredProcedureCommand("Mem_Redeem")
dbCommand.Connection = DbConnection
dbCommand.Transaction = dbTrans
AddInParameter(dbCommand, "@ReceiptNo", DbType.String, 50, DBNull.Value)
If Not String.IsNullOrEmpty(receiptNo) Then
dbCommand.Parameters("@ReceiptNo").Value = receiptNo
End If
AddOutParameter(dbCommand, "@OutAutoIDs", DbType.String, 4000, DBNull.Value)
ExecuteNonQuery(dbCommand)
Dim outAutoIDs As String = CType(dbCommand.Parameters("@OutAutoIDs").Value, String)
dbCommand = GetStoredProcedureCommand("Mem_Redeem_Log_Add")
dbCommand.Connection = DbConnection
dbCommand.Transaction = dbTrans
AddInParameter(dbCommand, "@VoucherNo", DbType.String, 50, DBNull.Value)
dbCommand.Parameters("@VoucherNo").Value = voucherNo
AddInParameter(dbCommand, "@RedeemTransactAutoID", DbType.String, 4000, DBNull.Value)
dbCommand.Parameters("@RedeemTransactAutoID").Value = outAutoIDs
ExecuteNonQuery(dbCommand)
Catch ex As Exception
Throw New DALException(ex, dbCommand, customerCode, "VoucherRedemption")
Finally
If Not dbCommand Is Nothing Then
dbCommand.Dispose()
End If
If Not dbTrans Is Nothing Then
dbTrans.Dispose()
End If
End Try