• wolfkillj (2/20/2013)


    venkat9.sql (2/20/2013)


    wolfkillj (2/20/2013)


    L' Eomot Inversé (2/20/2013)


    Nice interesting question.

    I really must upgrade and get SQL2012 so that I can start playing with this stuff instead of just reading about it.

    If people have run the code and got 14 for erros state, what's going on? I would expect to see 14 only if THROW was called without any parameters (to rethrow the previous error).

    I think people said they got severity level 14, not error state 14. They must be looking at the results of the SELECT in the CATCH block, which does show Level = 14, rather than the error message returned by the THROW statement, which always shows "Level 16" as its defined behavior.

    Hey from BOL, I was infering that when THROW is used in a catch block without any parameters, it returns the level of the actual error raised in the try block and not 16...

    Please let me know if I am right?

    I don't think that's right. BOL specifies that THROW can be called without parameters only in a CATCH block, and also that severity is ALWAYS set to 16 with THROW.

    Source: http://msdn.microsoft.com/en-us/library/ee677615.aspx

    No, Venkat has it right.

    BoL is quite clear that when throw is called without parameters it rethrows the error that caused the catch block to be entered. There's even an example on the BoL page you refrence that has it produciing severity 14. Severity 16 occurs whenever a new error is thrown (ie throw has parameters), but not when the existing error is rethrown (ie throw has no parameters); it would make no sense to supply severity 16 when re-throwing a caught error which has a different severity.

    Tom