Bonjour,
j'ai réalisé et testé une procédure en pl/pgsql.
Je voudrais l'appeler au sein d'un programme écrit en C et pré-compilé avec ecpg.
Pour l'instant je fais comme ceci :
Ce qui est troublant c'est que si je met la valeur du paramètre dans la requeteAFaire et en enlevant le USING dans l'ouverture 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
21
22
23
24
25
26
27
28
29 ... EXEC SQL BEGIN DECLARE SECTION; const char* requeteAFaire = "SELECT maFonction(?);"; char parametre[20]; char resultat[50]; EXEC SQL END DECLARE SECTION; // CONNEXION A LA BASE // APPEL printf("Valeur du paramètre ?)\n"); scanf("%s",parametre); EXEC SQL PREPARE requeteO FROM :requeteAFaire; EXEC SQL DECLARE curseur CURSOR FOR requeteO; EXEC SQL WHENEVER NOT FOUND DO BREAK; EXEC SQL OPEN curseur USING :parametre; while (1) { EXEC SQL FETCH curseur INTO :enregistrement; printf("%s\n",enregistrement); } EXEC SQL CLOSE curseur; EXEC SQL COMMIT; EXEC SQL DEALLOCATE PREPARE requeteO; ...
Ca fonctionne.....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 const char* requeteAFaire = "SELECT maFonction('ma chaine');";
Je ne trouve nul part de l'information sur ce genre d'appel, pouvez-vous m'aider ?
Merci,
Partager