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.