|
Posted by Plamen Ratchev on 01/03/08 22:25
SQL Server reports that the stored procedure executed successfully because
there are no errors. Just because your SQL statement attempts to update
non-existing SSN, it does not mean you will get an error. You have to handle
this using application logic, not to expect SQL Server to report an error.
If you really do want to get an error when invalid SSN update is attempted,
then you can add something like the code below at the end of your stored
procedure, just after the UPDATE statement:
IF @@ROWCOUNT = 0
RAISERROR ('Invalid SSN.', 16, 1)
The @@ROWCOUNT function returns the number of rows affected by the last
statement. Then if 0 rows have been updated it means the SSN is invalid and
RAISERROR will force an error.
However, based on the requirements that you need to return @SQLCode and
@ErrMsg, you are probably looking for something like this:
1). Add two OUTPUT parameters to the stored procedure for @@SQLCode and
@ErrMsg:
@SQLCode CHAR(1) OUTPUT, @ErrMsg VARCHAR(20) OUTPUT
2) Inside the stored procedure, just after the UPDATE check if rows have
been updated and set those two parameters:
IF @@ROWCOUNT = 0
SELECT @SQLCode = 'E', @ErrMsg = 'Invalid SSN.'
3) Then when you declare those two parameters and pass to the stored
procedure with the OUTPUT keyword.
This is just one example on how you can return the error code and message,
based on your application architecture different variations can be used. You
can probably go only with error message as the error code is redundant, but
not sure about your specs.
HTH,
Plamen Ratchev
http://www.SQLStudio.com
Navigation:
[Reply to this message]
|