我在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