|
Posted by Erland Sommarskog on 12/15/06 16:26
Dan Guzman (guzmanda@nospam-online.sbcglobal.net) writes:
> Check the proc return code and raise an error with state 127 on failure.
> OSQL will then terminate. For example:
>
> DECLARE @ReturnCode int
> EXEC @ReturnCode = dbo.usp_TEST1
> IF @ReturnCode <> 0
> BEGIN
> RAISERROR('Procedure dbo.usp_TEST1 return code is %d', 16, 127,
> @ReturnCode)
> END
> GO
>
> DECLARE @ReturnCode int
> EXEC @ReturnCode = dbo.usp_TEST2
> IF @ReturnCode <> 0
> BEGIN
> RAISERROR('Procedure dbo.usp_TEST2 return code is %d', 16, 127,
> @ReturnCode)
> END
Even better is this check:
IF @Returcode <> 0 OR @@error <> 0
The procedure may not set a return code in case of errors, and there
are errors where the proceudure does not return a value at all. (More
precisely compilation error, in which case the procedure is terminated
and execution continues with the next statement.)
If Joel is on SQL 2005 he should of course use TRY CATCH, but since he
using OSQL, I assmue that he is on SQL 2000.
--
Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se
Books Online for SQL Server 2005 at
http://www.microsoft.com/technet/prodtechnol/sql/2005/downloads/books.mspx
Books Online for SQL Server 2000 at
http://www.microsoft.com/sql/prodinfo/previousversions/books.mspx
[Back to original message]
|