How Many Records Did SQL Delete?
February 4, 2004 Hey, Ted
I have an RPG IV program with an embedded SQL DELETE statement. Is it possible for my program to determine how many records are deleted when the statement executes?
–Tom
DB2/400 returns this information to you through a subfield of the SQL communications area (SQLCA), a data area that is automatically included in your RPG program when you compile. You can refer to this subfield by either of two names: SQLERRD(3) or SQLER3. When a DELETE, UPDATE, or INSERT operation completes normally, DB2 updates the subfield with the number of rows that qualified for the operation.
C/exec sql C+ delete from somefile C+ where company = :company C/end-exec /free if SQLER3 > *zero;
I understand that RPG is the only compiler that includes the SQLCA by default. According to the SQL Reference, the COBOL, C, PL/I, and FORTRAN programs must use the SQL INCLUDE command to reference the SQLDA. In the following short COBOL program, the SQLCA is included in the working-storage section.
Identification division. Program-ID. SQL005. Environment division. Data division. Working-storage section. 01 Company pic s999 packed-decimal. 01 EmptySet pic x. Exec SQL include SQLCA end-exec. Procedure division. Main-logic. Exec SQL set option commit=*none end-exec. Exec SQL delete from qtemp/cuxt where company = 99 end-exec. if SQLERRD(3) > zero move "N" to EmptySet else move "Y" to EmptySet end-if. goback.
For more information about the SQLCA, consult the DB2 reference on IBM’s Web site.
–Ted