Print Error Description In Sql Server
Contents |
here for a quick overview of the site Help Center Detailed answers to any questions you might have Meta Discuss the workings what is sql error and policies of this site About Us Learn more about Stack Overflow
T-sql @@error
the company Business Learn more about hiring developers or posting ads with us Stack Overflow Questions Jobs Documentation db2 sql error Tags Users Badges Ask Question x Dismiss Join the Stack Overflow Community Stack Overflow is a community of 6.2 million programmers, just like you, helping each other. Join them; it https://msdn.microsoft.com/en-us/library/ms190358.aspx only takes a minute: Sign up How to get error_message from SQL Server TRY…CATCH block [duplicate] up vote 2 down vote favorite This question already has an answer here: Using the result of an expression (e.g. Function call) in a stored procedure parameter list? 6 answers BEGIN TRY BEGIN TRANSACTION --Lots of T-SQL Code here COMMIT END TRY BEGIN CATCH http://stackoverflow.com/questions/21090076/how-to-get-error-message-from-sql-server-try-catch-block ROLLBACK USE [msdb]; EXEC sp_send_dbmail @profile_name='Mail Profile', @recipients='myEmail@mydomain.org', @subject='Data Error', @body = SELECT ERROR_MESSAGE(); END CATCH I am getting the following error at this line @body = SELECT ERROR_MESSAGE(); Incorrect syntax near the keyword 'SELECT'. Any one know why? sql-server tsql share|improve this question edited Jan 13 '14 at 11:48 marc_s 454k938711033 asked Jan 13 '14 at 11:24 StackTrace 3,9521858108 marked as duplicate by Martin Smith, Remus Rusanu, bytebuster, trudyscousin, vzwick Jan 13 '14 at 14:57 This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question. You most certainly can't have a USE [msdb]; in the middle of your CATCH block. .... –marc_s Jan 13 '14 at 11:53 add a comment| 3 Answers 3 active oldest votes up vote 4 down vote accepted You can not issue a SELECT statement directly into the parameter of a stored procedure. Do something like this instead: DECLARE @err_msg AS NVARCHAR(MAX); SET @err_msg = ERROR_MESSAGE(); EXEC sp_send_dbmail @profile_name='your Mail Profile here', @recipients='myEmail@mydomain.org', @subject='Data Error', @body=@err_msg share|improve
here for a quick overview of the site Help Center Detailed answers to any questions you might have Meta Discuss the workings and policies of this site About Us Learn more about Stack Overflow the company Business http://stackoverflow.com/questions/12317561/how-to-print-a-message-in-error-handling-with-try-throw-and-catch Learn more about hiring developers or posting ads with us Stack Overflow Questions Jobs Documentation http://stackoverflow.com/questions/13647437/how-to-get-sql-error-in-stored-procedure Tags Users Badges Ask Question x Dismiss Join the Stack Overflow Community Stack Overflow is a community of 6.2 million programmers, just like you, helping each other. Join them; it only takes a minute: Sign up How to print a message in error handling with try, throw and catch up vote 4 down vote favorite I want to print sql server a message ("The table employe is not exist in database") in my query. My query is: create proc sp_emprecord as begin select * from employe end begin try execute sp_emprecord end try begin catch select error_message() as errormessage, error_number() as erronumber, error_state() as errorstate, error_procedure() as errorprocedure, error_line() as errorline; end catch sql-server-2008 error-handling share|improve this question edited Sep 7 '12 at 11:56 LittleBobbyTables 22.8k116485 asked Sep 7 '12 at 11:50 user1621597 2112 add a in sql server comment| 1 Answer 1 active oldest votes up vote 6 down vote Try this: create proc sp_emprecord as begin select * from employe end go begin try execute sp_emprecord end try begin catch if(ERROR_NUMBER() = 208) RAISERROR ('The table employe is not exist in database', 0, 1) WITH NOWAIT; else select error_message() as errormessage, error_number() as erronumber, error_state() as errorstate, error_procedure() as errorprocedure, error_line() as errorline; end catch share|improve this answer answered Sep 7 '12 at 14:03 Jānis 1,6861821 add a comment| Your Answer draft saved draft discarded Sign up or log in Sign up using Google Sign up using Facebook Sign up using Email and Password Post as a guest Name Email Post as a guest Name Email discard By posting your answer, you agree to the privacy policy and terms of service. Not the answer you're looking for? Browse other questions tagged sql-server-2008 error-handling or ask your own question. asked 4 years ago viewed 6727 times active 4 years ago Blog Stack Overflow Podcast #92 - The Guerilla Guide to Interviewing Related 369How to get useful error messages in PHP?1How to capture error message returned from linked server?4SQL try-catch statement not handling error (SQL Server 2008)0Sql Server 2008 - Having trouble catching execution error thrown by a stored proc running on a linked server0SQL How do you make a u
here for a quick overview of the site Help Center Detailed answers to any questions you might have Meta Discuss the workings and policies of this site About Us Learn more about Stack Overflow the company Business Learn more about hiring developers or posting ads with us Stack Overflow Questions Jobs Documentation Tags Users Badges Ask Question x Dismiss Join the Stack Overflow Community Stack Overflow is a community of 6.2 million programmers, just like you, helping each other. Join them; it only takes a minute: Sign up How to get sql error in stored procedure up vote 5 down vote favorite 3 I'm using SQL Server 2005. I created a stored procedure which works most of the time, but I found an instance of where it doesn't do what I want. Currently, the code does something like this if @@error <> 0 begin select @message_error = "There was a database error adding product "+ @product + " to product line end Where @message_error is an output variable. So, I can select @@error and get a number, but all I really want is the SQL error. Something like Hey, I couldn't do this because there is a fk constraint on this column or whatever. I found this article on msdn http://msdn.microsoft.com/en-us/library/ms178592(v=sql.90).aspx But it only goes over throwing custom exceptions with RAISERROR, I don't want to create my own error message or exception, I just want to know why stuff isn't working. I can execute the stored procedure through Management Studio and see the exact SQL error, but this is tedious trying to match data from the site and manually inserting it that way. How do I get the SQL error text into an output variable? sql sql-server tsql sql-server-2005 stored-procedures share|improve this question edited Nov 30 '12 at 14:53 marc_s 454k938711033 asked Nov 30 '12 at 14:47 Steve G 2,39552347 2 Have you looked at ERROR_MESSAGE msdn.microsoft.com/en-us/library/ms190358.aspx? –Romhein Nov 30 '12 at 14:54 add a comment| 3 Answers 3 active oldest votes up vote 8 down vote accepted Here's part of a stored procedure template I use: /* CREATE PROCEDURE... */ DECLARE @ErrorMessage varchar(2000) ,@ErrorSeverity tinyint ,@ErrorState tinyint /* Additional code */ BEGIN TRY /* Your code here */ END TRY BEGIN CATCH SET @ErrorMessage = ERROR_MESSAGE() SET @ErrorSeverity = ERROR_SEVERITY() SET @ErrorState = ERROR_STATE() RAISERROR(@ErrorMessage, @ErrorSeverity, @ErrorState) BREAK END CATCH /* Further cleanup code */ Try/Catch blocks can be tricky but are much more thorough than @@error. More importantly, you can use the various error_xxx() functions within them. Here, I store the proper error message in variable @ErrorMes