我在SQL Server 2012中有存儲過程,比如說spXample和一個定標器函數fXample。 我從spXample調用函數fXample。 我可以在函數中拋出一個異常,並在存儲過程的Catch
塊中捕獲它並重新引發到調用C#代碼?從SQL Server函數向存儲過程拋出異常
更新:
我寫的功能等:
CREATE FUNCTION dbo.fXample(@i INT)
RETURNS TINYINT
AS
BEGIN
RETURN (SELECT CASE WHEN @i < 10
THEN THROW 51000,'Xample Exception',1;
ELSE (SELECT @i)
END);
END
GO
我收到錯誤
Msg 443, Level 16, State 14, Procedure fXample, Line 46 Invalid use of a side-effecting operator 'THROW' within a function.
我怎樣寫替代代碼來實現上述功能?
拋出一個異常的功能基礎上什麼樣的條件?什麼類型的函數,標量,TVF,多語句TVF? – 2013-04-05 14:41:41
嘗試RAISERROR:http://msdn.microsoft.com/en-us/library/ms178592.aspx。如果你給它一個較低的嚴重性,它可以被CATCH捕獲。從那裏,你可以稱它爲「嚴重」的嚴重性(我認爲11+;頁面上有例子),它會停止SP的執行並將它踢回到你的應用程序。 – valverij 2013-04-05 14:42:30
Aaron的Scaler價值,異常將基於驗證。 – MaxRecursion 2013-04-05 14:45:42