January 16, 2006 at 11:14 am
I am running the following code which I expect to fail and I can't understand why the error handling is not working
declare @result int
EXEC @result = sp_password 'old_password', 'new_password, 'user'
if @@error = 15211
print 'failure'
It is not printing the error message "failure"! I have also converted @@error with the following code and it displays 0 i.e. zero!!
declare @errornum int
SELECT @errornum=@@error
PRINT 'ERRORNUM = ' + CONVERT(CHAR(5),@errornum)
Can anyone please shed any light?
This is what query analyser returns
Server: Msg 15211, Level 16, State 1, Procedure sp_password, Line 58
Old (current) password incorrect for user. The password was not changed.
January 16, 2006 at 11:24 am
If an error has a high enough severity, you can't trap it because the entire batch is terminated and rolled back at that point. Your "If @@Error .." statement never gets to execute because of the level 16 error.
January 16, 2006 at 2:30 pm
You are assignig error code returning by SP to @Result and than check @@error.
What would you expect?
@@error reports you if "EXEC" was failed, e.g. no such SP, wrong number of parameters, etc.
But if you want to get result of SP execution check @result:
EXEC @result = sp_password 'old_password', 'new_password, 'user'
if @result = 15211
print 'failure'
_____________
Code for TallyGenerator
Viewing 3 posts - 1 through 2 (of 2 total)
You must be logged in to reply to this topic. Login to reply
This website stores cookies on your computer.
These cookies are used to improve your website experience and provide more personalized services to you, both on this website and through other media.
To find out more about the cookies we use, see our Privacy Policy