For case 1: If you are executing a package that was bound with SQLERROR(CONTINUE), determine whether the statement in question was bound as a
valid section. You can use the following statements to query the DB2 catalog:
SELECT SQLERROR
FROM SYSIBM.SYSPACKAGE
WHERE COLLID = collection-id
AND NAME = package-id
AND VERSION = version-name
If that query returns 'C', the package was bound with SQLERROR(CONTINUE).
SELECT STMTNO
, TEXT
FROM SYSIBM.SYSPACKSTMT
WHERE COLLID = collection-id
AND NAME = package-id
AND VERSION = version-name
AND SECTNO = number
AND BINDERROR = 'Y'
If that query returns any rows, the section is invalid.
Refer to the error messages issued during the bind to determine the cause.
Correct any errors and bind the package again, using the REPLACE option.
For case 2: If the DB2 system has fallen back to a previous release, determine whether there are any SQL statements with a section number of zero that are not
upported by that release.
You can use the following statements to query the DB2 catalog.
When executing from a DBRM, use:
SELECT *
FROM SYSIBM.SYSSTMT
WHERE SECTNO = 0
ORDER BY NAME
, PLNAME
, STMTNO
, SEQNO
When executing from a package, use:
SELECT *
FROM SYSIBM.SYSPACKSTMT
WHERE SECTNO = 0
ORDER BY COLLID
, NAME
, VERSION
, STMTNO
, SEQNO
For case 3: Examine the application to determine whether the call parameter list was changed in some way.
In general, you should not attempt to change the output of the precompiler.
SQLSTATE: 58003