Whenever Goto Action in Embedded SQL Blocks
An Embedded SQL block-structured statement is a statement delimited by the words begin and end. For example, the select loop and unloadtable loops are block-structured statements. You can terminate these statements only by the methods specified for their termination in the SQL Reference Guide. For example, the select loop is terminated either when all the rows in the database result table are processed or by an endselect statement. The unloadtable loop is terminated either when all the rows in the forms table field are processed or by an endloop statement.
Therefore, if you use a whenever statement with the goto action in an SQL block, you must avoid going to a label outside the block. Such a goto causes the block to be terminated without issuing the runtime calls necessary to clean up the information that controls the loop. (For the same reason, you must not issue a Fortran return or goto statement that causes control to leave or enter the middle of an SQL block.) The target label of the whenever goto statement should be a label in the block. If however, it is a label for a block of code that cleanly exits the program, you do not need to take such precautions.
The above information does not apply to error handling for database statements issued outside an SQL block or to explicit hard-coded error handling. For an example of hard-coded error handling, see
The Table Editor Table Field Application in this chapter.