Default procedure error handling is different in the Watcom-SQL and Transact-SQL dialects. By default, Watcom-SQL dialect procedures exit when they encounter an error, returning SQLSTATE and SQLCODE values to the calling environment.
Explicit error handling can be built into Watcom-SQL stored procedures using the EXCEPTION statement, or you can instruct the procedure to continue execution at the next statement when it encounters an error, using the ON EXCEPTION RESUME statement.
When a Transact-SQL dialect procedure encounters an error, execution continues at the following statement. The global variable @@error holds the error status of the most recently executed statement. You can check this variable following a statement to force return from a procedure. For example, the following statement causes an exit if an error occurs.
IF @@error != 0 RETURN
When the procedure completes execution, a return value indicates the success or failure of the procedure. This return status is an integer, and can be accessed as follows:
DECLARE @Status INT EXECUTE @Status = proc_sample IF @Status = 0 PRINT 'procedure succeeded' ELSE PRINT 'procedure failed'
The following table describes the built-in procedure return values and their meanings:
|0||Procedure executed without error|
|-2||Data type error|
|-3||Process was chosen as deadlock victim|
|-6||Miscellaneous user error|
|-7||Resource error, such as out of space|
|-8||Non-fatal internal problem|
|-9||System limit was reached|
|-10||Fatal internal inconsistency|
|-11||Fatal internal inconsistency|
|-12||Table or index is corrupt|
|-13||Database is corrupt|
The RETURN statement can be used to return other integers, with their own user-defined meanings.
Using the RAISERROR statement in procedures
Transact-SQL-like error handling in the Watcom-SQL dialect