|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre chevronné
![]() Développeur Web Inscription : mars 2005 Messages : 771 ![]() |
Bonjour à tous ,
J'imaginais naïvement que cette manipulation serait relativement simple. Hélas, j'ai beau chercher, je bloque. Le code ci-dessous est une copie du code de "démo" d'Oracle. Comme souvent, ce code ne compile pas, j'ai donc adapté un peu l'appel. A présent, il compile, mais il ne marche pas. Voici le code : Code :
Quelqu'un peut-il éclairer ma lanterne ?????? |
||
|
|
00
|
|
|
#2 | |
|
Membre expérimenté
![]() ![]() Inscription : décembre 2005 Messages : 541 ![]() |
Citation:
Code :
make -f demo_proc.mk build EXE=<file>.lc OBJS=<file>.o |
|
|
|
00
|
|
|
#3 |
|
Membre chevronné
![]() Développeur Web Inscription : mars 2005 Messages : 771 ![]() |
J'ai récupéré le bout de code directement dans la doc en ligne d'Oracle. Pas de .lc donc. D'ailleurs, la doc en ligne parle de fichier .c de démo qui n'existent sous aucune des installs que j'ai (en 9 et 10).
Cela dit, j'ai beau continuer à retourner le problème dans tous les sens, je ne vois pas d'où me vient ce pointeur NULL... |
|
|
00
|
|
|
#4 |
|
Membre expérimenté
![]() ![]() Inscription : décembre 2005 Messages : 541 ![]() |
Les Pro*C d'exemples ne sont pas sur le(s) CD(s) de base, ils sont presents sur le CD "compagnon".
|
|
|
00
|
|
|
#5 |
|
Expert Confirmé
![]() Inscription : février 2006 Messages : 3 433 ![]() |
Dans votre exemple, vous ne testez pas la valeur de la variable status: pourquoi ? En C, il faut tester tous les codes retours de toutes les fonctions (OCI et les autres) car il n'y a pas de mécanisme standard d'exception. Que vaut status à l'exécution ?
Etes-vous également sûr que m_pEnv a une valeur correcte (avez-vous testé le code retour de la fonction qui a initialisé m_pEnv ) ? A mon avis, OCI est l'interface la plus puissante d'Oracle mais aussi la plus compliquée. A moins d'en avoir absolument besoin, il vaut mieux utiliser Pro*C si on doit faire du C ou JDBC si on peut faire du java. |
|
|
00
|
|
|
#6 |
|
Membre chevronné
![]() Développeur Web Inscription : mars 2005 Messages : 771 ![]() |
Bonjour, et merci à tous deux pour vos réponses. On se sent moins seul, parce que pour ne rien vous cacher, ça fait trois semaines que je me bats pour adapter le code, et j'en chie !
Pour le test de la valeur de retour, je ne me souviens plus, je vérifierai lundi. Le pointeur sur OCIEnv est valide par contre, je l'utilise pour des traitements ultérieurs (dont le OCIStmtExecute, qui fonctionne fort bien quand je n'essaye pas de lier des tableaux de char* comme indiqué dans mon autre post désespéré ici : http://www.developpez.net/forums/viewtopic.php?t=473224 Quant à la pertinence de l'utilisation d'OCI, je n'en suis pas juge ni décisionnaire. En tant que mercenaire codeur, je fais là où on me dit de faire. Cela dit, c'est dur, mais instructif. Si j'en sors vivant, ça fera toujours bien sur le CV. 8) |
|
|
00
|
|
|
#7 | ||
|
Membre expérimenté
![]() ![]() Inscription : décembre 2005 Messages : 541 ![]() |
Mon C est un peu rouille. Au cas ou ca puisse aider:
Code :
|
||
|
|
00
|
|
|
#8 |
|
Membre chevronné
![]() Développeur Web Inscription : mars 2005 Messages : 771 ![]() |
Well, ça va mieux ! L'observation sur le test de la valeur de retour était la clé. J'avais négligé de le faire, ce qui m'aurait épargné quelques migraines. Résultat : l'environnement n'était pas initialisé en mode OCI_OBJECT, ce pour quoi il refusait de travailler avec une OCIString.
Même saturé et en fin de semaine, jaurais du penser à tester status et à relever les messages Oracle. Merci pour votre aide en tous cas. Ca va me permettre de contourner (mais pas de comprendre, hélass...) l'autre problème sur lequel je me casse les dents depuis jeudi : le liage d'un tableau de char* par OCIBindArray. Le liage d'un tableau d'OCIString fonctionne bien, heureusement, ce qui me permettra de parvenir au résultat souhaité sans perte (apparente) de perfs. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com