Bonjour,
Je vais un appel à une procedure stocké via VB6. Cette procédure stocké renvoi un curseur de type Refcursor, tout ce passe bien lorsque je fais juste uniquement renvoyer à ma procédure stocké un curseur.
Par contre si dans la procédure stocké, j'utilise aussi ce curseur pour faire des mises à jour dans des tables cela plante et me sort l'erreur :
En revanche si je fais l'appel directement, depuis PL/SQL developper cela fonctionne correctement.ORA-01002 fetch out of sequence
J'ai bien sur regarde l'explication du message mais je dois avoue ne pas tout comprendre mon anglais est vraiment pas terrible, décidement
Pour info voici comment j'ouvre mon curseur :ORA-01002 fetch out of sequence
Cause: In a host language program, a FETCH call was issued out of sequence. A successful parse-and-execute call must be issued before a fetch. This can occur if an attempt was made to FETCH from an active set after all records have been fetched. This may be caused by fetching from a SELECT FOR UPDATE cursor after a commit. A PL/SQL cursor loop implicitly does fetches and may also cause this error.
Action: Parse and execute a SQL statement before attempting to fetch the data.
J'ai vu que cela pouvais ce produire lorsque l'on faisant un SELECT ... FOR UPDATE, mais ce n'est pas mon cas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 procedure maprocedure (CurCourrier OUT TCurCourrier) open CurCourrier for str_requete; loop Fetch CurCourrier into rec; Exit when CurCourrier%notfound; insert into t_historique(num_cli, num_aff, cod_cou, cod_tab, cod_evt, cod_usr,lib_imgavt,dat_hst) values (rec.numcli, rec.numaff, v_cod_cou, 'CU', 'COK', user, v_lib_cou, to_char(sysdate, 'dd/mm/yyyy')); end loop; commit; end maprocedure
J'espere que ce n'est pas un bug VB6.
Merci de votre aide.[/code]
Partager