SQL Programming Manual for Pascal
Error and Status Processing
HP NonStop SQL Programming Manual for Pascal—528614-001
6-3
Using the WHENEVER Directive
 WARNING_SUM := WARNING_SUM + 1;
 SQLCADISPLAY ( XADDR (SQLCA),,,,'N','Y');
 END ; {HANDLE_WARNINGS}
PROCEDURE PERFORM_WORK ;
 BEGIN
 { Check for errors and warnings before beginning: }
 IF SQLCODE < 0 THEN HANDLE_ERRORS
 ELSE IF (SQLCODE > 0) AND (SQLCODE <> 100)
 THEN HANDLE_WARNINGS ;
 { Start a TMF transaction: }
 EXEC SQL BEGIN WORK ;
 { Do an SQL INSERT into the PARTS table:}
 IN_PARTS_REC.IN_PARTNUM := 4120;
 IN_PARTS_REC.IN_PRICE := 6000000;
 { IN_PRICE value is multiplied by 100 to reflect scale }
 IN_PARTS_REC.IN_PARTDESC := 'V8 DISK OPTION';
 EXEC SQL
 INSERT INTO SALES.PARTS (PARTNUM, PRICE, PARTDESC)
 VALUES (:IN_PARTS_REC.IN_PARTNUM,
 SETSCALE (:IN_PARTS_REC.IN_PRICE, 2),
 :IN_PARTS_REC.IN_PARTDESC) ;
 {SETSCALE function represents scale to SQL}
 { Check for errors and warnings: }
 IF SQLCODE < 0 THEN HANDLE_ERRORS
 ELSE IF (SQLCODE > 0) AND (SQLCODE <> 100)
 THEN HANDLE_WARNINGS ;
 { Check for errors and warnings before committing: }
 { the transaction: }
 IF SQLCODE < 0 THEN HANDLE_ERRORS
 ELSE IF (SQLCODE > 0) AND (SQLCODE <> 100)
 THEN HANDLE_WARNINGS ;
 { End the TMF transaction: }
 EXEC SQL COMMIT WORK;
END ; {PERFORM_WORK}
Using the WHENEVER Directive
The WHENEVER directive specifies an action that a program takes depending on the 
outcome of subsequent DML, DCL, and DDL SQL statements. WHENEVER provides 
tests for these conditions:
•
An error occurred.
•
A warning occurred.
•
No rows were found.










