Bonjour à tous,
Je dois récupérer l'heure courante et avec le code suivant j'ai une segmentation fault et je ne sais pas pourquoi!
Merci d'avance pour votre aideCode:
1
2
3
4 OCIDate *date; OCIError *errhp; OCIDateSysDate (errhp,date);
Version imprimable
Bonjour à tous,
Je dois récupérer l'heure courante et avec le code suivant j'ai une segmentation fault et je ne sais pas pourquoi!
Merci d'avance pour votre aideCode:
1
2
3
4 OCIDate *date; OCIError *errhp; OCIDateSysDate (errhp,date);
tes handles date et errhp ont-ils été alloués ?
au passage, je te rappelle que ocilib encapsule oci.... ;)
Une fois que tu aura bien galéré avec oci directement, tu verras que tu aurais pu écrire la même chose avec ocilib avec entre 5 et 10 fois moins de lignes de codes en au moins 20 fois moins de temps.....;)
j'avais oublié d'allouer la date! :)
Par contre j'ai un peu de mal avec le bind
Ma requête est la suivante :
Ensuite je bind de cette manière :Code:
1
2 requete = (text *)"INSERT INTO DM_LOCK_ITEM_VERSION (PRODUCT_ID, PROJECT_ID, ITEM_SPEC_UID, FILENAME, FILE_VERSION, DATE_CREATION) VALUES ('produit', 'version', 10, 'nom_fichier', 15, :date)";
mais j'ai comme erreur :Code:
1
2
3
4 OCIBindByName(sqlhp, &bind1, errhp, (text *) ":date", -1, (ub1 *) &date, (sword) sizeof(date), SQLT_DAT, (dvoid *) 0, (ub2 *) 0, (ub2) 0, (ub4) 0, (ub4 *) 0, OCI_DEFAULT);
J'ai un peu de mal à voir comment fonctionne la fonction OCIBindByName en fait. Pourrais-tu m'aider?Code:
1
2 ORA-01745: invalid host/bind variable name
Je n'utilise pas OCILIB car j'ai juste 3 requêtes simples à écrire! :)
'date' est un mot clé oracle... Utilise un autre nom de variable...
quand tu aura terminé ton prog, compte le nombres de ligne et le temps passé à le faire.... Pour 3 requetes (en fonction de ce que tu en fait), un code complet ocilib devrait etre autour de 50 lignes tout compris et ecris en 5 minutes...
Juste pour le fun, donne moi tes trois requetes et je fais le prog ocilib pour comparer...
effectivement j'avais oublié que le mot était réservé! :)
Mon code est maintenant le suivant :
en ayant remplacé les date par date_courante.Code:
1
2
3
4 OCIBindByName(sqlhp, &bind1, errhp, (text *) ":date_courante", -1, (ub1 *) &date_courante, (sword) sizeof(date_courante), SQLT_DAT, (dvoid *) 0, (ub2 *) 0, (ub2) 0, (ub4) 0, (ub4 *) 0, OCI_DEFAULT)
mais j'ai toujours ça :
Code:
1
2 Error - OCI_INVALID_HANDLE
t'as alloué sqlhp ?
problème résolu (discussion continuée par messagerie instantanée).
plusieurs soucis liés aux appels oci étaient en cause.