PRO*C : passage de parametres dans une requete

PRO*C : passage de parametres dans une requete - C - Programmation

Marsh Posté le 07-05-2006 à 17:44:37    

Bijour les gens,
 
Comme vous vous en doutez j'ai le probleme suivant :
 
Je souhaiterais retrouver l'ID max d'une table grâce à une requête.  
 
Pour ce faire je créer une fonction :  
int maxID(char * id, char *table);
 
ou id est le nom de la colonne contenant l'id et table le nom de la table.
 
Dans la section contenant les variables sql j'ai déclaré:
char id[20];
char table[20];
 
et voici ma fonction :  
 

Code :
  1. int maxID(char * id, char * table) {
  2.     printf ("\n Recheche de l'ID Max" );   
  3.     printf ("\n table :\t\t: %s", table);
  4.    
  5.     EXEC SQL SELECT MAX(:id)
  6.     INTO :maxid
  7.     FROM :table;
  8.     testErreur ("Recheche du maxid\n" );
  9.     if (sqlca.sqlcode==0) {
  10.         printf("\nMaxId\t\t: %i", maxid);
  11.         fflush(stdin);
  12.         getch();
  13.     }
  14.     return maxid;
  15. }


Auriez vous une idée ?   ;)
 
merci d'avance  

Message cité 1 fois
Message édité par GUG le 07-05-2006 à 17:45:53
Reply

Marsh Posté le 07-05-2006 à 17:44:37   

Reply

Marsh Posté le 07-05-2006 à 17:56:25    

GUG a écrit :


Code :
  1. EXEC SQL SELECT MAX(:id)
  2.     INTO :maxid
  3.     FROM :table;




 
 
Tu met :id et :table
et il faut ici la valeur id réference à ta table. (sans les ":" )
et pour la table c'est pareil.
 
exemple :
 
EXEC SQL SELECT NVL(MAX(ID),0) INTO :vnum FROM ADRESSE;
 
 
Avec ADRESSE ( ID , NOM, PRENOM ...)


Message édité par traiz le 07-05-2006 à 18:00:29
Reply

Marsh Posté le 07-05-2006 à 18:01:11    

Le précompilateur proC n'aime pas le  
from :table;
 
Y a t il tout de même un moyen de faire une requete dynamique ? :cry:


Message édité par GUG le 07-05-2006 à 18:03:47
Reply

Marsh Posté le 09-05-2006 à 13:08:44    

Salut,
Cherche autour de "EXEC SQL PREPARE ..." dans la doc, tu devrais trouver ton bonheur. Sinon, utilise les fonctions OCI directement, c'est encore mieux.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed