[PL/SQL + VB] ORA-01002 fetch out of sequence
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 :
Citation:
ORA-01002 fetch out of sequence
En revanche si je fais l'appel directement, depuis PL/SQL developper cela fonctionne correctement.
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 :cry:
Citation:
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.
Pour info voici comment j'ouvre mon curseur :
Code:
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'ai vu que cela pouvais ce produire lorsque l'on faisant un SELECT ... FOR UPDATE, mais ce n'est pas mon cas.
J'espere que ce n'est pas un bug VB6. :cry:
Merci de votre aide.[/code]