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