NevemTeve Creative Commons License 2014.10.06 0 0 5081

Tegyük fel, hogy hiba történt az INSERT-ben, és sqlca.sqlcode==-1. Gyanítom, hogy valamilyen constraint sérült.

 

Vajon mit ténykedek, ha (magában a programban) szeretném megállapítani annak a contraint-nek a nevét, ami sérült, hogy isten ments valahogy megpróbáljam menteni a helyzetet, vagy legalább informatív hibaüzenetet adjak?

 

Nem találtam jobbat, mint hogy az SQLErrorGetText kimenetében megkerestem az első (vagy egyetlen) zárójelpárt, abban volt a constraint neve. Na, eddig ment, de ma a következőt kaptam: 'z'.... Némi nyomozás után bele is raktam a programba a következő üzenetet:

 

    if (q==p+1 && p[0]=='z') {  /* Ezt találtuk meg: "A(z)" */
        fprintf (stderr,
            "*** Valami jószándékú idióta az Oracle üzenetek"
            " nyelvét magyarra állította.n"
            "*** Kérlek javítasd ki:n"
            "export NLS_LANG=American_America.EE8ISO8859P2n");
        p= q+1;
        goto KERESS;
    }