Bonjour du Québec!

Je tentes de récupéré le ROWID d'une rangée nouvellement insérée via OCILIB.
Je ne peux recevoir la valeur lorsque je déclare la variable de retour de longueur OCI_SIZE_ROWID, tel que je m'attendrais.
En doublant la longueur, ca passait à l'éxécution, mais pas de retour quand même.


Voici le code (édité pour abbrévier...) :

Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
      sprintf(stmtSQL,
                "insert into %s values ( %s ) RETURNING  CAST(ROWID AS varchar2(48)) INTO :new_row_id",
                tableName,
                fieldValues);
 
      rms->insertStmt = OCI_StatementCreate(cn);
 
      OCI_RegisterString(rms->insertStmt, MT(":new_row_id"), 48);//OCI_SIZE_ROWID);
 
      stmtStatus = OCI_Prepare(rms->insertStmt, stmtSQL);
 
      char rowid[OCI_SIZE_ROWID+1] = "NULLLLL"; // Dummy value until RETRUNING works...
 
      // binding insert values here ... 
 
      stmtStatus = OCI_Execute(rms->insertStmt);
 
      OCI_Resultset * rs = OCI_GetResultset(rms->insertStmt);
      while (OCI_FetchNext(rs))
              strcpy(rowid, OCI_GetInt(rs, 1));
              printf("ROWID = %s\n", rowid);