我寫過一個存儲過程。其中我想檢查一個條件,如果該條件變成真,那麼我不想繼續存儲過程的其餘部分。由於在存儲過程中使用RETURN導致的問題
如果返回false,那麼我想繼續存儲過程的其餘部分。
我的存儲過程是在這裏:
IF (@RefPOID <> 0)
BEGIN
IF EXISTS(// SELECT STATEMENT)
BEGIN
SET @Status = 'Please select the Items'
RETURN
END
END
IF(POID = 0)
BEGIN
//INSERTION
END
ELSE
BEGIN
//DELETION
END
此存儲過程已經成功編譯。不過,雖然從前端調用此存儲過程,它顯示的錯誤
System.Data.SqlClient.SqlException:當前 命令發生了 嚴重錯誤。結果,如果有的話,應該丟棄 。
如果我從存儲過程中刪除了RETURN語句,那麼它的工作正常。
如果條件變爲false,則存儲過程在我從前端調用時工作正常。
但我想檢查那裏的情況,如果它是真的返回。
我確信由於存在RETURN問題。
爲什麼會出現問題?出了什麼問題?如何解決這個問題?請提供任何建議。
使用了'RETURN'在交易中間 - 你需要的'RETURN'前添加一個'ROLLBACK TRANSACTION'正常終止運行的事務...... –
非常真實的。有關在T-SQL中使用TRY CATCH的詳細信息,請參閱。此鏈接中有一節標題爲「TRY ... CATCH with RAISERROR」,並且有一節標題爲「B.在...中使用TRY ... CATCH交易「,提供有用的例子。 –
@marc:是marc。你說的是絕對正確的。謝謝。 – thevan