If you are planing  to use ecpg :

exec sql declare cuserbase cursor for
     select column1, column2, column3 from my_table order by 1;
exec sql open cuserbase;

exec sql whenever not found do break;
while ( true ) {
   exec sql fetch cuserbase into ...
   // do same work
}

exec sql close cuserbase;

Please read documentation for more detail.

Good luck.

Sergey.

"Alla" <[EMAIL PROTECTED]> ???????/???????? ? ???????? ?????????:
[EMAIL PROTECTED]">news:[EMAIL PROTECTED]...
> Alexander Dederer <[EMAIL PROTECTED]> wrote in message
news:<9ehged$k4f$[EMAIL PROTECTED]>...
> > Can you send PL/SQL code and back-end code used this PL/SQL code?
> > Myself  trubles with CURSOR I resolve use LIMIT ... OFFSET ...
>
> It would look something like this:
>
> create or replace package my_package
> AS
>    type gc_cursor is ref cursor;
>
>    procedure load_users
>    (pp_user_base     out   gc_cursor);
> end my_package;
> /
>
> create or replace package body my_package
> as
> procedure load_users
> (pp_user_base     out   gc_cursor)
> as
> begin
>    open pp_user_base for
>       select column1, column2, column3
>       from my_table
>       order by 1;
>
> exception
>    when others then
>       raise_application_error(-20100, 'Error while trying to load user
base ' ||
>          sqlerrm);
> end load_users;
>
> end my_package;
> /
>
> C program would look something like this:
>
> void
> load_user_base()
> {
> EXEC SQL BEGIN DECLARE SECTION;
>    sql_cursor cUserBase;
> EXEC SQL END DECLARE SECTION;
>
>   struct USER_PROFILE {
>     .......
>   } user_profile[ARRAY_LENGTH];
>
>   struct USER_PROFILE_IND {
>     .......
>   } user_profile_ind[ARRAY_LENGTH];
>
>   EXEC SQL ALLOCATE :cUserBase;  /* allocate the cursor variable */
>
>   EXEC SQL EXECUTE
>     BEGIN
>       my_package.load_users(:cUserBase);
>     END;
>   END-EXEC;
>
>   EXEC SQL WHENEVER NOT FOUND DO break;
>
>   for (;;) {
>     EXEC SQL FOR :i FETCH :cUserBase INTO :user_profile:user_profile_ind;
>
>     if (sqlca.sqlcode != 0) {
>       fprintf(stderr, "Fetching users %s\n", sqlca.sqlerrm.sqlerrmc);
>       break;
>     }
>   }
>
> ........
> ........
>
> Thanks for your response
>
> Alla



---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]

Reply via email to