2
我認爲這是一個基本的SQL問題... sorry..new它... :-)我該如何執行一個SP,並根據它的結果執行另一個查詢,如果失敗應該恢復SP做了什麼?
我想執行其內部
{
我想執行一個SP(SP一使用EXEC)並根據它的結果我想要執行另一個查詢(INSERT
),如果因任何原因失敗應該恢復SP做了什麼?
}
我該怎麼做?
交易?如果是,如何?
請注意,內部SP發出一封郵件。
我認爲這是一個基本的SQL問題... sorry..new它... :-)我該如何執行一個SP,並根據它的結果執行另一個查詢,如果失敗應該恢復SP做了什麼?
我想執行其內部
{
我想執行一個SP(SP一使用EXEC)並根據它的結果我想要執行另一個查詢(INSERT
),如果因任何原因失敗應該恢復SP做了什麼?
}
我該怎麼做?
交易?如果是,如何?
請注意,內部SP發出一封郵件。
事情是這樣的:
BEGIN TRAN
DECLARE @rc int
EXEC @rc = EXEC inner_proc
IF (@rc = 1)
INSERT something
IF @@ERROR <> 0
ROLLBACK
ELSE
COMMIT
如果什麼inner_proc發送郵件給別人?它會回滾嗎? – Manish 2010-01-05 12:27:19
只有當你有一個交易郵件服務器...... – 2010-01-05 12:29:10
但是,嚴肅地說,處理這個問題的最好方法可能是將郵件排列在數據庫表中並讓後臺進程加載併發送它們。然後,在這種情況下,郵件插入將回滾。 – 2010-01-05 12:30:03