Handling SQL Error Return Codes
Your DB2 product includes a routine that translates SQLCODE error values into readable text messages. When you process your program source with Open PL/I's DB2 SQL precompiler, an %INCLUDE statement is inserted into your program, and the include file this incorporates into your program contains a declaration of this SQLCODE translator routine as an entry, as follows:
declare sqldb2err entry(fixed bin(15) value,
/* Buffer Size */
fixed bin(15) value, /* Line Width */
any, /* SQLCA */
any) /* Buffer */
returns(fixed bin(15))
external('sqlgintp');
The return code values are:
- >0 Length of message
- -1 Internal DB2 error
- -2 No error, SQLCODE = 0
- -3 Invalid SQLCODE, no such error
- -4 Line width is 0
- -5 Invalid SQLCA, bad buffer address or bad buffer size
Example:
declare errmsg character(200);
exec sql connect to MYDB;
if sqlca.sqlcode < 0 then do;
put skip list('Connect failed');
/* Now print out reason for failure for most */
/* recent SQL statement (i.e., the connect) */
msg_len = sqldb2err(size(errmsg),0,sqlca,errmsg);
put skip list(substr(errmsg,1,msg_len));
return;
end;
You do not need to declare sqldb2err. This is done for you automatically, as described above.
For more information about this routine, see SQLGINTP (Get Error Message) in your IBM platform-specific DATABASE 2 Programming Reference manual.