2.10. Raising and Handling Stored Procedure Errors
Problem
You want to catch and handle an error raised from a stored procedure.
Solution
Use a
try . . . catch block to catch serious errors. Use
the
SqlConnection.InfoMessage event handler to catch informational and
warning messages.
The sample code, as shown in Example 2-11, uses a single stored procedure and two event handlers:
SP0210_RaiserrorAccepts two input parameters specifying the severity and the state of an error and raises an error with the specified severity and state.
- Raise Error
Button.Click Creates a connection and attaches a handler for warning and information messages from the SQL Server. A
Commandis created for theSP0210_Raiserrorstored procedure and the input parameters are defined. The user-specified severity and state are assigned to the input parameters and the stored procedure command is executed within atrystatement.SqlConnection.InfoMessageCalled when a warning or informational message is raised by the SQL Server.
Example 2-11. Stored procedure: SP0210_Raiserror
CREATE PROCEDURE SP0210_Raiserror
@Severity int,
@State int = 1
AS
if @Severity>=0 and @Severity <=18
RAISERROR ('Error of severity %d raised from SP 0210_Raiserror.', @Severity,
@State, @Severity)
if @Severity>=19 and @Severity<=25
RAISERROR ('Fatal error of severity %d raised from SP 0210_Raiserror.',
@Severity, @State, @Severity) WITH LOG
RETURNThe C# code is shown in Example 2-12.
Example 2-12. File: RaiserrorForm.cs
// Namespaces, variables, and ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access