Thursday, 2 October 2014

RAISERROR()


Introduction

Microsoft Error handling is an important factor for every developer. Here in this article, I am not going to explain the entire process of error handling. But here in this article I am trying to explain most important portion of Error handling is called RaisError() function.  

Syntax of RaisError()
RAISERROR ( { Message ID | Message Text}
            { ,severity ,state }
            [ ,argument [ ,...n ] ] )
            [ WITH option [ ,...n ] ]


Setting Custom Error Messages
The user defines error message number stores on sys.messages catalog view. First have a look on the catalog view.

SELECT * FROM sys.sysmessages;



Understanding the Syntax
Here the Error Number is very important. The user defines error numbers begins at greeter then 50000.
We can add the custom error message by using system stored procedure named sp_AddMessage.

sp_addmessage [ @msgnum= ] msg_id, [ @severity= ] severity ,
              [ @msgtext = ' ] 'message'
              [, [ @lang = ] 'Language' ]
              [, [ @with_log = ] 'log' ]
              [, [ @replace = ] 'replace' ]

@msgnum
It indicate the number of Message for user define message it should be grater then 50000

@severity
It means the priority of the Error Messages. It’s range from 0-25. But for user define message we use 0-19. Severity level 20-25 is considered as fatal error.
 A TRY…CATCH construct catches all execution errors with severity greater than 10 that do not terminate the database connection.

Errors with severity from 0 through 10 are informational messages and do not cause execution to jump from the CATCH block of a TRY…CATCH construct.

Errors that terminate the database connection, usually with severity from 20 through 25, are not handled by the CATCH block because execution is aborted when the connection terminates.


@msggtext
The error message can have a maximum of 2,047 characters. If the message has more than 2,047 characters, then will show only 2,044 characters with an ellipsis to indicate that the message has been truncated


We can pass the optional custom parameters within the message text. This parameter is useful to display any custom messages within the message text. The details of the parameters are mentioned bellow.

Type of Separation
Representation
d or i
Signed integer
O
Unsigned Octal
S
String
U
Unsigned Integer


@lang
It means the language that we want to specify.


@with_log
Set TRUE to log the event in event viewer.

@replace
If the same message number already exists, but we want to replace the string for that ID, we have to use this parameter.


Example with sp_AddMessage
Here we are going to add a custom error message by using sp_AddMessage stored procedure.

EXEC sp_addmessage
      @msgnum   = 50009,
      @severity = 1,
      @msgtext  = 'Example Custom Error Message';
GO

SELECT * FROM sys.sysmessages where error=50009;





Here we provide an example to understand it properly.

EXEC sp_addmessage
@msgnum   = 50010,
@severity = 1,
@msgtext  = 'Invalid Sales Order Number : %s for Quantity :%i';

GO
SELECT * FROM sys.sysmessages where error=50010;

   
error      
severity
dlevel
description 
msglangid
50010
1
0
Invalid Sales Order Number : %s for Quantity :%i
1033

How to Call  RaisError() Function

BEGIN
     DECLARE @str_Sorder  VARCHAR(max),
             @int_Qty     INT;
               
     SET @str_Sorder = 'ORDER-1';
     SET @int_Qty = 30;
       
    RAISERROR(50010, 1, 1, @str_Sorder, @int_Qty);
END

Invalid Sales Order Number : ORDER-1 for Quantity :30
Msg 50010, Level 1, State 1



Hope you like it.


Posted by: MR. JOYDEEP DAS

No comments:

Post a Comment