Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.server -> Pro*C - sqlca.sqlcode & sqlca.sqlerrd[2] not populated correctly!
Hi All,
Platform: Digital Alpha Unix
Oracle: 7.3.3.5
Pro*C : 2.2.3
Could someone explain to me what is going on here?
#include <stdio.h>
EXEC SQL INCLUDE SQLCA;
EXEC SQL INCLUDE ORACA;
EXEC SQL BEGIN DECLARE SECTION;
char *userid = "scott/tiger";
int deptno[100];
EXEC SQL END DECLARE SECTION;
EXEC ORACLE OPTION (ORACA=YES);
void sql_error();
main()
{
oraca.orastxtf = ORASTFERR;
EXEC SQL WHENEVER SQLERROR DO sql_error();
EXEC SQL CONNECT :userid;
printf("SQLCA.SQLCODE = %d\n", sqlca.sqlcode);
EXEC SQL WHENEVER SQLERROR do sql_error(); EXEC SQL WHENEVER NOTFOUND CONTINUE; EXEC SQL UPDATE emp SET deptno = 10; printf("SQLCA.SQLERRD[2] = %d\n", sqlca.sqlerrd[2]); printf("SQLCA.SQLCODE = %d\n", sqlca.sqlcode);
EXEC SQL SELECT deptno INTO :deptno FROM emp; printf("SQLCA.SQLERRD[2] = %d\n", sqlca.sqlerrd[2]); printf("SQLCA.SQLCODE = %d\n", sqlca.sqlcode);
EXEC SQL DELETE FROM emp;
printf("SQLCA.SQLERRD[2] = %d\n", sqlca.sqlerrd[2]);
printf("SQLCA.SQLCODE = %d\n", sqlca.sqlcode);
EXEC SQL UPDATE emp SET deptno = 10 WHERE 1 = 2; printf("SQLCA.SQLERRD[2] = %d\n", sqlca.sqlerrd[2]); printf("SQLCA.SQLCODE = %d\n", sqlca.sqlcode);
EXEC SQL ROLLBACK WORK RELEASE;
return 0;
}
void sql_error()
{
fprintf(stderr, "\n%s\n",
sqlca.sqlerrm.sqlerrml, sqlca.sqlerrm.sqlerrmc); fprintf(stderr, "in \"%s...\"\n",
oraca.orastxt.orastxtl, oraca.orastxt.orastxtc); fprintf(stderr, "on line %d of %s.\n\n",
oraca.oraslnr, oraca.orasfnm.orasfnml, oraca.orasfnm.orasfnmc);
EXEC SQL WHENEVER SQLERROR CONTINUE;
EXEC SQL ROLLBACK WORK RELEASE;
exit(1);
}
Output:
SQLCA.SQLCODE = 0 SQLCA.SQLERRD[2] = 538976343 SQLCA.SQLCODE = 0 SQLCA.SQLERRD[2] = 538976288 SQLCA.SQLCODE = 1380909081 SQLCA.SQLERRD[2] = 538976343 SQLCA.SQLCODE = 1380909056 SQLCA.SQLERRD[2] = 538976288 SQLCA.SQLCODE = 1380909080Received on Wed Apr 15 1998 - 00:00:00 CDT