Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.server -> Pro*C - sqlca.sqlcode & sqlca.sqlerrd[2] not populated correctly!

Pro*C - sqlca.sqlcode & sqlca.sqlerrd[2] not populated correctly!

From: Ranga Chakravarthi <rchak_at_netcom.com>
Date: 1998/04/15
Message-ID: <rchakErH5n5.H6H@netcom.com>#1/1

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 = 1380909080
Received on Wed Apr 15 1998 - 00:00:00 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US