Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.misc -> Re: Pro*C : Stored procedure in cursor
Chris <Chris_at_nospam.com> writes:
> Hello,
>
> I'm trying to call a stored procedure in a cursor in Pro*C :
>
> EXEC SQL DECLARE cur CURSOR FOR
> SELECT id
> FROM suivi_rejet
> WHERE lib = 'MyLib';
> EXEC SQL OPEN cur;
> EXEC SQL FETCH cur INTO :id;
>
> while (sqlca.sqlcode != NO_DATA_FOUND)
> {
> EXEC SQL FETCH cur INTO :id;
> EXEC SQL EXECUTE
> BEGIN
> MY_PACKAGE.my_procedure(:id);
> END;
> END-EXEC;
> }
> EXEC SQL CLOSE cur;
>
> by I get : ORA-01002 "fetch out of sequence".
> I can't see where is my error. :-(
I assume that you got an NO_DATA_FOUND but although you call the procedure. Another problem is that your first fetch is not passed to the procedure. I would try it as follows. Seems to me more logical:
Harald
EXEC SQL DECLARE cur CURSOR FOR
SELECT id FROM suivi_rejet WHERE lib = 'MyLib'; EXEC SQL OPEN cur; while (1) { EXEC SQL FETCH cur INTO :id; if( sqlca.sqlcode != NO_DATA_FOUND) break; EXEC SQL EXECUTE BEGIN MY_PACKAGE.my_procedure(:id); END; END-EXEC; } EXEC SQL CLOSE cur;Received on Thu Sep 18 2003 - 08:35:24 CDT