Salut,
Je développe une application C/ProSQL Informix et j'utilise des curseurs pour effectuer des requêtes, ce qui donne grosso-modo :
(je vous passe la gestion des erreurs et le parcours du curseur).
Code : 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 EXEC SQL begin declare section; char *req; struct sqlda *da; EXEC SQL end declare section; /* Preparation de la requete */ EXEC SQL prepare prep_tableau from :req; /* Récupération des informations */ EXEC SQL describe prep_tableau into da; /* ... */ /* Declaration du curseur */ EXEC SQL declare curs_tableau scroll cursor for prep_tableau; /* Ouverture du curseur */ EXEC SQL open curs_tableau; /* ... */
Ce curseur sert à afficher les données sous forme de tableau et reste donc ouvert tant que le programme tourne.
Le problème, c'est que je voudrais utiliser ce code pour afficher plusieurs tableaux à la fois, mais étant donnée que le nom du curseur curs_tableau est en dur dans le code, je suis obligé de fermer la première requête (et donc effacer le tableau précédent).
Il semble qu'il soit possible d'utiliser une variable comme nom de curseur, du style :
Mais j'ai trouvé très peu de documentation là dessus, et surtout j'ignore totalement le type que je dois utiliser pour :ma_var_prep et :ma_var_cursor.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 EXEC SQL prepare :ma_var_prep from :req; EXEC SQL declare :ma_var_cursor scroll cursor for prep_tableau;
Est-ce que quelqu'un a déjà fait ca, ou pourrait me guider vers une doc clair à ce sujet (tout ce que je trouve concerne le code que j'utilise actuellement).
a++
PS: Je précise que j'ai déjà pris en compte la possibilité de recopier la totalité du curseur en mémoire afin de le fermer au plus tôt, mais cette solution ne m'intéresse pas.
Partager