A l'exécution d'un programme de test comprenant les instructions suivantes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3OCILib: 3.9.2 Oracle client/serveur: v8.1 Système: Windows 7 / VS2010
- OCI_ConnectionCreate
- OCI_StatementCreate
- OCI_Prepare
- OCI_Execute
- OCI_GetResultset
Je reçois les mêmes erreurs décrites dans ce post.
Je les recopie ici pour ceux qui feraient une recherche:
Malheureusement, je ne peux changer de version, cas dans lequel le problème n'existait plus pour ce développeur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
En debuggant dans les sources d'ocilib, j'ai pu remarquer que dans OCI_Prepare, je ne passais pas dans cet appel d'OCI_HandleAlloc:
Ce qui est logique, puisqu'en compilant pour Windows, OCI_VERSION_COMPILE est égal à OCI_11_2. Du coup on ne teste pas la version runtime.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14#if OCI_VERSION_COMPILE < OCI_9_2 if(OCILib.version_runtime < OCI_9_2) { /* allocate handle */ res = (OCI_SUCCESS == OCI_HandleAlloc((dvoid *) stmt->con->env, (dvoid **) (void *) &stmt->stmt, (ub4) OCI_HTYPE_STMT, (size_t) 0, (dvoid **) NULL)); } #endif
De ce fait, on appelle ensuite un OCI_Execute avec un handle de statement à null.
Je ne me suis pas renseigné, mais je devine que cet appel n'est pas nécessaire pour les versions supérieures ou égales à 9.2 (d'où les if), mais dans mon cas (compilation sous Windows avec la 8.1), il faudrait.
J'ai donc modifié le #if en:
pour que sous Windows dans tous les cas on teste la version runtime, puisqu'on ne connait pas la version à la compilation. Tout semble fonctionné correctement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part #if OCI_VERSION_COMPILE < OCI_9_2 || defined OCI_IMPORT_RUNTIME
Est-ce bien la bonne modification à faire sans compromettre la stabilité de la lib?
Par ailleurs, reprenant du code écrit avec les appels de fonction d'OCI, la lib OCILib est un vrai bonheur!

 

 
		
		 
         
 

 
			
			


 
   
 


 [OCILIB] Allocation de handle de statement
 [OCILIB] Allocation de handle de statement
				 Répondre avec citation
  Répondre avec citation


 
  
  
  
 
 
			
 
						
Partager